Redis基础——数据类型

数据类型

在 Redis 中一共有五种数据类型,可以与 Java 中的五种数据类型类比

  • string → String
  • hash → Hashmap
  • list → LinkList
  • set → HashSet
  • sorted_set → TreeSet

String

常用命令

  • 添加/修改数据
set key value
  • 获取数据
get key
  • 删除数据
del key1 [key2]
  • 添加/修改多个数据
mset key1 value1 key2 value2
  • 获取多个数据
mget key1 key2
  • 获取数据的字符长度
strlen key
  • 在原数据后面追加数据(如果原数据不存在则添加新数据),返回新数据的字符长度
append key value
  • 将数值类型的数据增加,返回结果(如果原数据不存在则创建,默认为 0 )
incr key                    //自增 1
incrby key increment        //增加 increment
incrbyfloat key increment   //增加 increment ,可以是浮点数
  • 将数值类型的数据减少,返回结果(如果原数据不存在则创建,默认为 0 )
decr key                    //自减 1
decrby key increment        //减少 increment
  • 设置数据具有指定的生命周期
setex key seconds value
psetex key milliseconds value

Hash

常用命令

  • 添加/修改数据
hset key field value
  • 获取数据
hget key field
hgetall key
  • 删除数据
hdel key field1 [field2]
  • 添加/修改多个数据
hmset key field1 value1 field2 value2
  • 获取多个数据
hmget key field1 field2
  • 获取哈希表中字段的数量
hlen key
  • 判断哈希表中是否存在指定的字段
hexists key field
  • 获取哈希表中所有的字段名或字段值
hkeys key
hvals key
  • 将指定字段的数值类型的数据增加
hincrby key field increment        //增加 increment
hincrbyfloat key field increment   //增加 increment ,可以是浮点数
  • 判断指定 field 是否存在,若不存在则添加数据,反之不做处理 
hsetnx key field value

注意事项

  • hash 中的 value 只能存储字符串,不允许存储其他类型数据
  • hash 最多容纳 2^{32} - 1 个键值对
  • 当 field 过多时,使用 hgetall 遍历全部数据会极大的影响效率

List

常用命令

  • 添加数据
lpush key value1 [value2]
rpush key value1 [value2]
  • 获取数据
lrange key start stop       //获取从左数第 start 到 stop 个元素,stop 取 -1 表示最后一个元素
lindex key index            //查询第 index 个元素
  • 获取并删除数据
lpop key //获取并删除左边第一个元素
rpop key //获取并删除右边第一个元素
  • 获取数据个数
llen key
  • 获取并移除数据,若暂无数据则等待 timeout 秒
blpop key1 [key2] timeout
brpop key1 [key2] timeout
  • 删除指定数据,count 为删除个数,value 为待删除元素的值
lrem key count value

注意事项

  • list 中保存的数据都是 string 类型
  • list 最多容纳 2^{32}-1 个元素

Set

常用命令

  • 添加数据
sadd key value1 [value2]
  • 获取全部数据
smembers key
  • 删除数据
srem key value1 [value2]
  • 获取数据个数
scard key
  • 判断集合中是否包含指定数据
sismember key value
  • 随机获取集合中指定数量的数据,count 表示获取个数
srandmember key [count]
  • 随机获取集合中指定数量的数据,并将这些数据删除,count 表示获取个数
spop key
  • 求集合的交、并、差集
sinter key1 [key2]
sunion key1 [key2]
sdiff key1 [key2]
  • 求集合的交、并、差集,并存储到指定集合中,如果指定集合有元素则覆盖
sinterstore destination key1 [key2]
sunionstore destination key1 [key2]
sdiffstore destination key1 [key2]
  • 将指定数据从原始集合移动到目标集合中
smove source destination member

注意事项

  • set 中的数据不允许重复
  • set 与 hash 的存储结构相同,相当于是 hash 结构中的 value 恒为空

Sorted Set

常用命令

  • 添加数据
zadd key score1 member1 [score2 member2]
  • 获取全部数据,加上 WITHSCORES 表示连同 score 一起获取,stop 取 -1 表示最后一个元素
zrange key start stop [WITHSCORES]        //从小到大
zrevrange key start stop [WITHSCORES]     //从大到小
  • 删除数据
zrem key member [member ...]
  • 查找 score 在一定范围内的数据,limit 表示分页查询,如 limit 1 3 表示从结果的第一个数据开始,向后获取 3 个
zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
  • 按照 rank 或 score 范围进行删除,如果按照 rank ,则默认从小到大
zremrangebyrank key start stop
zremrangebyscore key min max
  • 获取数据个数
zcard key
zcount key min max
  • 求集合的交、并、差集,存储到指定集合中,并且将对应的 score 值相加,如果指定集合有元素则覆盖,numkeys 指定需要进行操作的集合数量
zinterstore destination numkeys key [key ...]
zunionstore destination numkeys key [key ...]
  • 获取数据对应的 rank(排名)
zrank key member
zrevrank key member
  • score 的获取与修改,increment 为增加的值(可以为负数)
zscore key member
zincrby key increment member

注意事项

  • 涉及到范围,如 rank 范围的 start 、stop ,score 范围的 min 、max 、均包含边界
  • score 为 64 位,可以为整数也可以为小数,作为小数时,基于双精度 double 类型的特征,可能会丢失精度
  • sorted_set 与 set 的底层结构相同,数据不允许重复,如果重复添加相同的数据,score 将被覆盖(返回为 0 表示失败,这个失败指的是数据添加失败,但实际上更改了 score 的值)

Guess you like

Origin blog.csdn.net/qq_25274377/article/details/120677551