学 Redis,这些数据类型及操作命令怎么能不会?

1、数据类型

Redis key(键)的类型只能为字符串,value (值)的类型如下 5 种类型:

  • string —— 字符串
  • hash —— 无序散列表
  • list —— 列表
  • set —— 无序集合
  • zset —— 有序集合

2、操作命令

说明这里的命令只是 Redis 命令的冰山一角,更多命令的详细介绍可以参看这里 Redis 中文网的命令中心,重要!!!

2.1 string

对整个字符串或者字符串的其中一部分执行操作,对整数和浮点数执行自增或者自减操作。

  • set key value 添加或修改(对已存在的键)单个字符串
set name xiaoming
  • get key 获取(查询)键对应的字符串值
get name
  • del key 删除键和对应的值
del key
  • mset key value [key value ...] 添加或修改(已存在的键)多个字符串
mset user1 xiaoming user2 xiaohong
  • mget key [key ...] 获取(查询)多个键对应的字符串值
mget user1 user2
  • incr key 对整数型的字符串加 1
set age 21
incr age // 22
get age // 22
  • decr key 对整数型的字符串减 1
set age 22
decr age // 21
get age // 21
  • append key value 追加值
set name aaa
get name // aaa
append name bbb
get name // aaabbb

2.2 hash

⽤于存储对象,对象的结构为属性、值,添加、获取、移除单个键值对 获取所有键值对 检查某个键是否存在。

  • hset key field value 设置单个属性
hset user name xiaoming
  • hget key field 获取单个属性的值
hget user name // xiaoming
  • hmset key field1 value1 field2 value2 ... 设置多个属性
hmset user name xiaoming age 21
  • hmget key field1 field2 ... 获取多个属性的值
hmget user name age
  • hkeys key 获取指定键所有的属性
hkeys user
  • hvals key 获取指定键所有属性的值
hvals user
  • hdel key field1 [field2 ...] 删除指定的属性及属性对应的值
hdel user name

2.3 list

列表的元素类型为 string,按照插入顺序排序,从两端压入或者弹出元素,读取单个或者多个元素进行修剪,只保留一个范围内的元素。

  • lpush key value1 [value2 ...] 从左端插入数据
lpush nums1 0 1 2
  • rpush key value1 [value2 ...] 从右端插入数据
rpush nums2 0 1 2
  • lrange key start stop 获取键对应列表指定范围的元素,start 为开始索引(索引从左侧开始,第一个元素下标为 0),stop 为结束索引(索引可以是负数,表示从右侧开始)
lrange nums1 0 -1 // 2 1 0
lrange nums2 0 -1 // 0 1 2
  • linsert key before|after pivot value 在 pivot 的前或后插入元素
linsert key nums1 before 2 3
lrange nums1 0 -1 // 3 2 1 0
  • lset key index value 设置(修改)指定索引位置的元素值
lset nums2 1 11
lrange nums2 0 -1 // 0 11 2
  • lrem key count value 删除键对应列表前 count 次出现的值(count > 0 表示从头往尾删除,count < 0 表示从尾往头删除,count = 0 表示删除所有)
lpush ab a b a a b a b b
lrange ab 0 -1 // b b a b a a b a
lrem ab 2 b // a b a a b a

2.4 set

无序集合的元素为 string,元素具有唯一性,不重复,对集合没有修改操作,添加、获取、移除单个元素 检查一个元素是否存在于集合中 计算交集、并集、差集 从集合里面随机获取元素。

  • sadd key member [member ...] 添加元素到无序集合
sadd set1 0 0 1 1 2 2
  • smembers key 查看无序集合中的元素成员
smembers set1 // 0 1 2
  • scard key 查看无序集合中的元素数量
scard set1 // 3
  • srem key member [member ...] 删除指定无序集合中的元素成员
srem set1 1
  • sinter key [key ...] 计算交集
sadd set1 0 1 2
sadd set2 1 2 3
sinter set1 set2 // 1 2
  • sinterstore destination key [key] 计算交集并将交集值存储在 destination 集合中
sadd set1 0 1 2
sadd set2 1 2 3
sinterstore set1_inter_set2 set1 set2
smembers set1_inter_set2 // 1 2
  • sunion key [key ...] 计算并集
sunion set1 set2 // 0 1 2 3
  • sunionstore destination key [key] 计算并集并将并集值存储在 destination 集合中
sadd set1 0 1 2
sadd set2 1 2 3
sunionstore set1_union_set2 set1 set2
smembers set1_union_set2 // 0 1 2 3
  • sdiff key [key ...] 计算差集
sdiff set1 set2 // 0
sdiff set2 set1 // 3
  • sdiffstore destination key [key] 计算差集并将差集值存储在 destination 集合中
sadd set1 0 1 2
sadd set2 1 2 3
sdiffstore set1_diff_set2 set1 set2
sdiffstore set2_diff_set1 set1 set2
smembers set1_diff_set2 // 0
smembers set2_diff_set1 // 3

2.5 zset

有序集合的元素为 string,元素具有唯一性,不重复,每个元素都会关联一个 double 类型的 score 表示权重,通过权重来给元素排序,没有修改操作,添加、获取、删除元素 根据分值范围或者成员来获取元素 计算一个键的排名。

  • zadd key score member [score member …] 添加元素到有序集合
zadd rank 10 xiaoming 9 xiaohong 8 xiaoguang 7 xiaohei 6 xiaozhi 5 xiaozhang
  • zrange key start stop 查看有序集合中所有元素(默认是升序排序)
zrange rank 0 -1 // xiaozhang xiaozhi xiaohei xiaoguang xiaohong xiaoming
  • zcard key 查看有序集合中的元素数量
zcard rank // 6
  • zrangebyscore min max 查看有序集合中 score 在 min 和 max 之间的元素
zrangebyscore 6 8 // xiaozhi xiaohei xiaoguang
  • zscore key member 查看有序集合中指定元素的 score 值
zscore rank xiaohei // 7
  • zrem key member [member …] 删除有序集合中指定元素及对应的 score 值
zrem rank xiaohei xiaozhang
  • zremrangebyscore key min max 删除有序集合中指定返回 score 值的元素
zremrangebyscore rank 7 8

2.6 key 命令

查找键的相关命令(对上面的类型都适用),参数支持正则表达式。

  • keys pattern 根据规则查找键
keys * // 查找所有的键
keys a* // 查找 a 开头的键
  • exists key [key ...] 判断键是否存在,如果存在返回 1,不存在返回 0
exists name
  • type key 查看键对应的 value 类型
type name
  • del key [key ...] 删除键和键对应的值
del name
  • expire key seconds 设置键的过期时间,单位为秒
set name xiaoming
get name // xiaoming
expire name 1
get name // nil
  • ttl key 查看剩下的有效时间,单位为秒
set name xiaoming
get name // xiaoming
expire name 100
ttl name // 98
ttl name // 97 有效时间逐渐减少

作者:Wizey

链接:https://www.imooc.com/article/274657

相关推荐