redis使用场景

redis使用场景


string类型
  • 字符串常见操作

    set key value //存入键值对

    mset key value [key value…] //批量存储字符串键值对

    setnx key value //存入一个不存在的字符串键值对

    get key //获取一个字符串

    mget key [key…] //批量获取字符串键值

    del key [key…] //删除一个键

    expire key seconds //设置一个键的过期时间(秒)

  • 原子加减

    incr key //将key中存储的数字值加一

    decr key //将key中存储的数字值减一

    incrby key increment //将key中所存储的值加上increment

    decrby key decrement //将key所存储的值减去decrement

  • string应用场景

    • 单值缓存

      • set key value
      • get key
    • 对象缓存

      • set name value (一般会使用json格式当作value数据)

      • mset 可以将json数据解开,存成多个键值对

      • 案例:set customer:1 value(json数据)

        mset customer:1:xx value customer:1:yy value

    • 分布式锁

      • setnx product true //返回1代表获取锁成功
      • setnx product true //返回0代表获取锁失败
      • del product //执行完业务释放锁
    • 计数器

      • 文章计数器 阅读量 incr article:num

hash类型
  • hash常用操作

    hset key field value //存储一个哈希key的键值

    hsetnx key field value //存储一个不存在的哈希表key的键值

    hmseet key field value[field value…] //在一个哈希表key中存储多个键值对

    hget key field //获取哈希表key对应的field 的值

    hmget key field[field…] //批量获取哈希表key中多个field 的值

    hdel key field [field…] //删除哈希表key中的field的键值

    hlen key //返回哈希表key中的field的数量

    hgetall key //返回哈希表key中所有的键值

    hincrby key field increment //为哈希表key中field键的值加上增量increment

  • hash应用场景

    • 对象缓存

      • hmset user userid1:name value userid1:age 14
      • hmset user userid2:name value userid2:age
    • 购物车

      hmset user product1:name value prodeuct1:num value

  • hash优缺点

    • 优点
      • 同类数据归类整合存储,方便数据管理
      • 相比string操作消耗内存与cpu更小
      • 相比string存储更节省空间
    • 缺点
      • 过期功能不能使用在field上,只能使用在key上
      • Redis集群架构下不适合大规模使用

list类型
  • list常用操作

    lpush key value[value…] //将一个或多个值value插入到key列表的表头(最左边)

    rpush key value[value…] //将一个或多个value插入到key列表的表尾(最右边)

    lpop key //移除并返回key列表的头元素

    rpop key //移除并返回key列表的尾元素

    lrange key start stop //返回列表key中指定区间内的元素,区间以偏移量start和stop指定

    blpop key [key…] timeout //从key列表表头弹出一个元素,若列表中没有元素,阻塞等待timeout

    ​ 秒,如果timeout=0,一直阻塞等待

    brpop key [key…] timeout //从key列表表尾弹出一个元素,若列表中没有元素,阻塞等待timeout

    ​ 秒,如果timeout=0,一直阻塞等待

  • list应用场景

    • 栈(stack)
      • lpush + lpop —>FILO
    • 队列(queue)
      • lpush + rpop
    • 阻塞队列(Blocking MQ)
      • lpush + brpop
    • 微博微信消息流
      • 使用lpush放入用户ID消息,然后使用lrange 来获取消息

set类型
  • set常用操作

    sadd key member [member…] //往集合key中存入元素,元素存在则忽略,若key不存在则创建

    srem key member[member…] //从集合key中删除元素

    smembers key //获取集合key中的所有元素

    scard key //获取集合key中的元素的个数

    sismemver key member //判断member元素是否存在于集合key中

    srandmember key [count] //从集合key中选出count个元素,元素不从key中删除

    spop key [count] //从集合key中选出count个元素,元素从key中删除

  • set运算操作

    sinter key [key…] //交集运算

    sinterstore destination key [key…] //交集结果存入新集合destination中

    sunion key [key…] //并集运算

    sunionstore destination key [key…]//并集结果存入新集合destination中

    sdiff key [key…] //差集运算

    sdiffstore destination key [key…] //差集结果存入新集合destination中

  • set使用场景

    • 微信抽奖小程序
      • 点击参与抽奖加入集合 sadd key {userID}
      • 查看参与抽奖所有用户 smembers key
      • 抽取count名中奖者 srandmember key [count]/spop key [count]
    • 微信微博点赞、收藏、标签
      • 点赞 sadd user ID
      • 取消点赞 srem user ID
      • 检查用户是否点过赞 sismember user ID
      • 获取用户点赞列表 smembers user
      • 获取点赞用户数 scard user
    • 关注模型 (使用集合)
      • 共同关注的人 ------ 交集
      • 可能认识的人 ------- 差集

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值