Redis核心数据结构及核心命令

Redis五种核心数据结构:

一、 字符串

        1、单值缓存

                set key value

                get key

        2、对象缓存

                set user:1  value(json数据)

                mset user:1:name xixi user:1:balance 18        //批量操作

                mget user:1:name user:1:balance

        3、分布式锁

                setnx  product:10001  true        //返回1代表获取锁成功,0代表获取锁失败

                del  product:10001                    //执行完释放锁

        4、计数器

                incr article:readcount:id        //文章id

                get article:readcount:id        //获取文章访问次数

        5、Web集群session共享

                spring session + redis实现session共享

        6、分布式系统全局序列号

                incrby orderId 1000        //redis批量生成序列号提升性能

二、Hash哈希结构

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

        HMSET key field value [field value ...]        //在一个哈希表key中存储多个key值

        HGET key field        //获取哈希表key对应field键值

        HDEL key field [field...]        //删除哈希表key中的field键值

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

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

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

        1、对象缓存

·        2、购物车

                添加商品:hset  cart:1001 10088 1

                增加数量:hincrby cart:1001 10088 1

                商品总数:hlen cart:1001

                删除商品:hdel cart:1001 10088

                获取购物车所有商品:hgetall cart:1001

        优点:

                1)同类数据归类整合存储,方便数据管理

                2)相比string操作消耗内存与cpu更小

        缺点:

                1)过期功能只能使用在key上,不能使用在field上

                2)Redis集群架构下不适合大规模使用

                Hash slot = CRC16(key)%16384,集群模式hash存储过于集中

三、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 ,一直阻塞等待

        BPOP key [key ...] timeout        //从key列表尾弹出一个元素,若列表中没有元素,阻塞等待timeout秒,如果timeout = 0,则一直阻塞等待

        1、常用数据结构:

                Stack(栈)= LPUSH + LPOP        //先进后出

                Queue(队列)= LPUSH + RPOP        //FIFO,先进先出

                Blocking MQ(阻塞队列)= LPUSH + BRPOP

        2、

四、Set结构

        SADD key member [member ...]        //往集合key中存入元素,存在则忽略,不存在则新建

        SREM key member [member ...]        //从集合key中删除元素

        SMEMBERS key        //获取集合key中所有元素

        SCARD key        //获取集合key的元素个数

        SISMEMBER key member        //判断member元素是否存在与集合key中

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

        SPOP key [count]        //从集合key中取出count个元素,并移除元素

                Set运算操作:交集(INTER)、并集(UNION)、差集(DIFF)        后缀STORE destination,将结果存入新集合destination中。

        SINTER key [key ...]        //交集运算

        SINTERSTORE destination key [key ...]        //将交集结果存入新集合destination中

        SUNION key [key ...]        //并集运算

        SUNIONSTORE destination key [key ...]        //将并集结果存入新集合destination中

        SDIFF key [key ...]        //差集运算

        SDIFFSTORE destination key [key ...]        //将差集结果存入新集合destination中

                场景:

        1、微信抽奖小程序

                点击参与抽奖加入集合

                SADD key {userId}

                查看参与抽奖所有用户

                SMEMBERS key

                抽取count名中奖者

                SRANDMEMBER key count

                SPOP key count

        2、微信微博点赞、收藏、标签

                点赞

                SADD like:{消息ID} {用户ID}

                取消点赞

                SREM like:{消息ID} {用户ID}

                检查用户是否点过赞

                SISMEMBER like:{消息ID} {用户ID}

                获取点赞的用户列表

                SMEMBERS like:{消息ID}

                获取点赞用户数

                SCARD like:{消息ID}

                可能认识的人

                SDIFF yy myfriend

五、有序集合

        ZADD key score member [[score member] ...]        //往有序集合key中加入带分值元素

        ZREM key member [member ...]        //从有序集合key中删除元素

        ZSCORE key member        //返回有序集合key中元素member的分值

        ZINCRBY key increment member        //为有序集合key中元素member的分值加上increment

        ZCARD key        //返回有序集合key中元素个数

        ZRANGE key start stop [WITHSCORES]        //正序获取有序集合key从start下标到stop下标的元素

        ZREVRANGE key start stop [WITHSCORES]        //倒序获取有序集合key从start下标到stop下标的元素

                Zset集合操作

        ZUNIONSTORE destkey numkeys key [key ...]        //并集计算

        ZINTERSORE destkey numkeys key [key ...]        //交集计算

        1、Zset集合操作实现排行榜

                点击新闻

                ZINCRBY hotNews:20210719 1 老百姓的幸福

                展示当日排行前十

                ZREVRANGE hotNews:20210719 0 9 WITHSCORES

                

         

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值