Redis-Hash类型

Redis的Value除了可以存储普通的字符串类型以外, 还可以存储Hash类型
Hash类型就相当于在JS中的对象, 可以把整个对象当做一个Value存储起来

1.增删改查

  • 增加
    hset key field value

hset user name simon
hset user age 18

  • 查询
    hget key field

hget user name

  • 修改
    如果字段不存在就是新增, 如果字段存在就是修改

hset key field value
hset user name woftsun

  • 删除

    • 删除指定的字段
      hdel key field

    hdel user name

    • 删除对应key所有的数据
      del key

    del user

2.高级操作

  • 批量新增
    hmset key field1 value1 field2 value2

hmset user name simon age18 score 100

  • 批量查询
    hmget key field1 field2 field3

hmget user name age score

  • 工具指令
    hlen key 返回key存储的hash表中有多少条数据

hlen user

hexists key field 判断指定的key存储的Hash中是否有指定的字段
hexists user name 返回1表示存在
hexists user gender 返回0表示不存在

3.其他操作

  • 查询所有field
    hkeys key

hkeys user

  • 查询所有value
    hvals key

hvals user

  • 查询所有的field和value
    hgetall key

hgetall user
注意点:由于Redis是单线程的, 而以上操作都是非常耗时的, 所以不推荐在企业开发中使用

Redis-List类型

1.增删改查

Redis的Value除了可以存储字符串和Hash类型以外, 还可以存储List类型
List类型就相当于JavaScript中的数组, 可以把整个数组当做一个Value存储起来
注意点: List是有序的

  • 增加
  • 从第二个Value开始添加到前一个的左边

    • lpush key value1 value2 value3
    • lpush arr1 aa bb cc -> cc bb aa
  • 从第二个Value开始添加到前一个的右边

    • rpush key value1 value2 value3
    • rpush arr2 aa bb cc -> aa bb cc
  • 查询
  • 查询指定范围数据

    • lrange key startIndex endIndex
    • 索引从0开始, endIndex等于-1表示取到最后
  • 查询指定索引数据

    • lindex key index
    • 从前往后索引从0开始, 从后往前索引从-1开始
  • 修改
    lset key index value

注意 index从0开始

  • 删除
  • lpop删除左边元素
    lpop key
  • rpop删除右边元素
    rpop key
  • lrem删除指定个数的指定元素
    lrem key count value
  • count > 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count
  • count < 0 : 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值
  • count = 0 : 移除表中所有与 value 相等的值
  • ltrim按照索引剪切列表
    ltrim key start end

2.其它操作

  • 追加数据
    lpush key value1,value2,...
  • 22 11 aa bb
    rpush key value1,value2,...
  • 22 11 aa bb 11 22
  • 插入数据
    linsert key before|after oldValue newValue
  • 获取列表长度
    llen key

3.列表实现简单数据结构

  • 栈结构(水桶) - 先进后出
    lpush + lpop
  • 队列结构(水管) - 先进先出
    lpush + rpop
  • 所以在企业开发中, 如果需要需要'先进后出'或者'先进先出'的数据
    我们就可以将这些数据存储到Redis的列表中

Redis-Set类型操作

集合就是一堆无序的数据, Redis可以把一堆无序的数据当做Value存储起来

注意点: 集合中不能出现重复的数据

1.增删改查

  • 新增
    sadd key value1, [value2, ...]
  • 查询

    • 返回集合中所有元素

      • smembers key
      • 注意点:由于Redis是单线程的, 而以上操作都是非常耗时的, 所以当元素比较多时需要慎用
    • 返回集合中N个元素

      • srandmember key [count]
  • 删除

    • 随机删除N个元素

      • spop key
    • 删除集合中的指定元素

      • srem key value1, [value2, ...]

2.其它操作

  • 追加元素

    • sadd: key不存在就新增, 存在就追加
    • sadd: 追加的元素不存在就追加, 追加的元素存在会自动忽略
  • 统计集合中元素个数

    • scard key
  • 判断集合中是否有指定元素

    • sismember key member

Redis中的集合是支持集合间的操作的, 也就是求交集,并集和差集

  • 交集

    • sinter key [key, ...]
    • {1, 2, 3} ∩ {2, 3, 4} = {2, 3}
  • 并集

    • sunion key [key, ...]
    • {1, 2, 3} ∪ {2, 3, 4} = {1, 2, 3, 4}
  • 差集

    • sdiff key [key, ...]
    • {1, 2, 3} - {2, 3, 4} = {1}
    • {2, 3, 4} - {1, 2, 3} = {4}

3.应用场景

  • 抽奖

    • srandmember key [count]
  • 绑定标签

    • sadd key value1, [value2, ...]
  • 社交关系

    • sinter key [key, ...]
    • sunion key [key, ...]
    • sdiff key [key, ...]

Redis-ZSet类型操作

​ ZSet是有序集合, Redis可以把一堆通过权重排序的数据当做一个Value存储起来

1.增删改查

  • 新增
    zadd key 权重 value 权重 value
  • 查询
  • 查询指定排名范围内的数据
    zrange key start end
  • 查询指定权重范围内的数据
    zrangebyscore key 权重 权重
  • 查询指定元素权重
    zscore key element
  • 查询指定权重范围内元素个数
    zcount key minscore maxscore
  • 查询集合中元素个数
    zcard key
  • 删除
  • 删除指定元素
    zrem key value
  • 删除指定排名范围元素
    zremrangbyrank key start end
  • 删除指定权重范围元素
    zremrangbyscore key minscore maxscore

2.其它操作

  • 增加或减少元素权重

    • zincrby key score element
  • 从高到低的操作
  • zrevrange
  • zrev...

2.Redis-ZSet类型-应用场景

  • 存储排行榜数据
Last modification:July 20th, 2020 at 11:08 am
来杯coffee吧