Redis的常见命令

单线程:每个命令具备原子性

低延迟,速度快(基于内存、IO多路复用、良好的编码)

支持数据持久化

支持主从集群、分片集群

支持多语言客户端

2.Redis数据库介绍

Redis是一个key-value的数据库,key一般是String类型,不过value的类型多种多样:

3.Redis的通用命令

KEYS查看符合模板的所有key,KEYS *查询所有键,不建议在生产环境设备上使用,因为如果数据足够多,模糊匹配可能需要很长时间来查询,又因为Redis是一个单线程。因此不建议在主设备上使用。

DEL删除一个指定的key,DEL name,删除name,返回值是删除的数量,命令DEL k1 k2 k3 批量删除。

EXISTS:判断key是否存在

EXPIRE:给key设置有效期,有效期到期时该key会被自动删除

TTL:查看一个key的剩余有效期

4.String类型

String类型是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可分为3类:

string:普通字符串

int:整形类型,可自增、自减操作

float:浮点类型,可做自增、自减操作

不管那种格式,底层都是字节数组形式存储,只不过编码方式不同。字符串类型的最大空间不能超过512M

常见命令

SET:添加一个String类型的键值对或者修改已经存在的一个String类型的键值对

GET:根据key获取String类型的value

MSET:批量添加多个String类型的键值对

MGET:根据多个key获取多个String类型的value

INCR:让一个整型的key自增1

INCRBY:让一个整型的key自增并指定步长

INCRBYFLOAT:让一个浮点类型的数字自增并指定步长

SETNX:添加一个String类型的键值对,前提是这个key不存在,否则不执行

SETEX:添加一个String 类型的键值对,并且指定有效期

5.key的结构

假如一个用户的id叫做id,一个商品的id也是id,除了更改名字来区别,好像没有别的法子了,因为Redis没有表的概念,那么用户和商品就会冲突,因此Redis的key允许有多个单词形成层级结构,多个单词之间用":"隔开,格式如下

项目名:业务名:类型:id

6.Hash类型

Hash类型,也叫散列,其value是一个无序字典,类似于java的HashMap结构。

String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便。Hash结构可以将对象中的每个字段独立存储,可以针对单个字段做CRUD,非常人性化:

Hash类型命令

HSET key field value:添加或者修改hash类型的key的field的值(一次只能设置一个field)

HGET key field:获取一个hash类型key的field的值

HMSET:批量添加多个hash类型key的field的值

HMGET:批量获取多个hash类型key的field的值

HGETALL:获取一个hash类型的key中的所有field和value

HKEYS:获取一个hash类型的key中的所有field

HVALS:获取一个hash类型的key的所有value

HINCRBY:让hash类型key的字段自增并指定步长

HINCRBY user:3 age 2

HSETNX:添加一个hahs类型的key的field值,前提是这个field不存在,否则不执行

7.List类型

Redis中的List类型于java的LinkedList类似,可以看做是一个双向链表,既可以支持正向索引也可以支持反向索引。

特征也于LinkedList类似:

有序

元素可以重复

插入和删除快

查询速度一般

List的常见命令有:

LPUSH key element ...:向列表左侧插入一个或多个元素(一直向左侧加元素)

LPOP key:移除并返回列表左侧的第一个元素,没有则返回null(先进后出栈的思想)

RPUSH key element ...:向列表右侧插入一个或多个元素

RPOP key:移除并返回右侧第一个元素(如果LPUSH存,RPOP取那就是队列的思想)

LRANGE key star end:返回这一段范围内的所有元素,start和end分别是list的索引,索引从0开始

BLPOP和BRPOP:于LPOP、RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

8.Set类型

Redis的Set结构与Java中的HashiSet类似,可以看做是一个value为null的HashMap。以为也是一个hash表,因此具备HashSet类似的特征:

无序

元素不可重复

查找快

支持交集、并集、差集等功能

Set类型的常见命令

SADD key member ...:向set中添加一个或者多个元素

SREM key member ...:移除set中指定元素

SCARD key:返回set中元素的个数

SISMEMBER key member:判断一个元素是否存在于set中,存在返回1,不存在返回0

SMEMBERS key:获取set中的所有元素

SINTER key1 key2 ...:求key1与key2的交集

SDIFF key1 key2 ...:求key1与key2的差集

SUNION key1 key2 ... :求key1与key2的并集

9.SortedSet类型

Redis的SortedSet是一个可排序的set集合,与Java的TreeSet有些类似,但是底层数据结构差别很大。SortedSet中每一个元素都带有一个score属性,可基于score属性对元素排序,底层的实现是一个跳表(SkipList)加hash表。SortedSet具备以下特性

可排序性

元素不重复

查询速度快

因为SortedSet的可排序特性,经常被用来实现排行榜这样的功能。

SortedSet的常见命令有:

**ZADD key score member:**添加一个或者多个元素到sortedset,如果已经存在则更新score值

ZREM key member: 删除 sortedset中的一个指定元素

ZSCORE key member:获取sortedset中指定元素的socre的值

ZRANK key member: 获取sortedset中指定元素的排名ZREVRANK key member是倒序。

ZCARD key:获取sortedset 中元素的个数

ZCOUNT key min max :统计score值在给定范围内的所有元素的个数,闭区间的min~max

ZINCRBY key increment member:让sortedset中的指定元素的score值自增,步长为指定的increment值

ZRANGE key min max:按照score排序后,取指定排名范围内的元素,min和max是索引从0开始

ZRANGEBYSCORE key min max:按照sore排序后,获取指定score范围内的元素,min和max是闭区间

ZDIFF、ZINTED、ZUNION:求差集、交集和并集

相关推荐
qq_4639448628 分钟前
如何把Excel文件导入Navicat?
数据库·excel
不太厉害的程序员30 分钟前
Excel 将数据导入到SQLServer数据库
数据库·sqlserver·excel
木宇(记得热爱生活)1 小时前
Qt GUI缓存实现
开发语言·qt·缓存
betazhou2 小时前
MySQL ROUTER安装部署
android·数据库·mysql·adb·mgr·mysql router
中东大鹅3 小时前
Mybatis Plus 多数据源
java·数据库·spring boot·后端·mybatis
一枚小小程序员哈3 小时前
springboot基于Java与MySQL库的健身俱乐部管理系统设计与实现
数据库·spring boot·mysql·spring·java-ee·intellij-idea
Antonio9153 小时前
【Redis】 Redis 基础命令和原理
数据库·redis·缓存
非优秀程序员3 小时前
未来的编程将会是什么样子?从面向对象转为面向业务数据!!
数据库·架构
老华带你飞4 小时前
口腔助手|口腔挂号预约小程序|基于微信小程序的口腔门诊预约系统的设计与实现(源码+数据库+文档)
java·数据库·微信小程序·小程序·论文·毕设·口腔小程序
hqxstudying5 小时前
J2EE模式---服务层模式
java·数据库·后端·spring·oracle·java-ee