springboot redis zset 读取排序列表_Java核心篇之Redis–day4

  1. Redis有哪些数据结构?
    字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。
    1.String:字符串,常用命令:get,set,decr,incr,mget(查询多个key)
    2.Hash类型:hset(添加赋值)/hget(查询)/hgetall(查询所有字段和值)等。
    3.list(列表类型):lpush(列表头部添加元素)/rpush(列表尾部添加元素)/lpop(头部删除元素)/rpop(尾部删除元素)/lrange(查询元素):不支持嵌套其他数据类型,应用场景很多,存储文章评论列表,存储用户的粉丝列表,黑名单列表等,也可以作为重要的消息队列来使用。Redis的list数据结构的实现是一个双向链表,支持正向反向遍历查找,方便用户操作的同时,也增加了内存开销。
    4.Set集合类型:Redis集合是字符串的不重复无序结构。常用命令有sadd(添加元素)/spop(删除)/smembers(查询)/sunion(添加多个集合)等,不支持嵌套其他数据类型,提供自动去重的功能(内部实现是一个value永远为null的hashmap)
    5.Zset(sorted set)在set基础上关联一个score,通过score来实现排序的功能。(应用到的场合:实现文章按点击量排序,微博热搜榜,论坛热帖)
  2. 高级应用:
    1. Redis发布订阅功能:发布订阅是一种消息的通信模式:发布者发布信息,订阅者接受信息,主要是为了解耦消息的发布者和订阅者,redis作为一个发布订阅的server,在订阅和发布之间起到了消息路由的作用。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将消息类型称为通道channel。当发布者向redis server发布特定类型的消息的时候,订阅该消息的所有client都会收到此消息。

dab21338317fcc1141b2c5d13ab9579f.png
    1. Redis支持事务功能:Redis的事务功能主要是保证同一个client发起的事务中的命令可以连续执行,而中间不会插入另一个客户端的命令。当一个客户端发起事务命令multi时,这个连接会进入一个事务上下文,该命令后续的命令不会立即执行,而是先放到一个queue中,当此连接收到exec命令后,redis才会顺序的执行队列中的命令,如何将所有命令结果返回给客户端。

84ca016e999f9e530c0fe824b646458f.png
    1. Redis的管道功能:Redis管道功能是指客户端在同一个请求中同时发送多个命令,在这个过程中无需等待每个命令的响应,而是在组合读取每个命令的响应回复。
    2. Redis的持久化功能:Redis 是一个基于内存的数据库,但是他也是支持数据持久化的,如果业务需要,可以开启业务持久化的功能,将内存数据持久化到磁盘中,从而保证数据的安全和完整性。
    3. 两种常用的持久化方式有:RDB(redis database)AOF(append only file)两种常用的持久化方式有:
    4. RDB(redis database)AOF(append only file)RDB(redis database)AOF(append only file)
      RDB:在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上;
      AOF:将执行过的指令记录下来,在数据恢复时按照从前到后的顺序再将指令都执行一遍,从而恢复数据。
  1. Redis作为一个内存数据库,优势如下:使用redis的好处:快速,持久化,事务原子性,单线程,缓存,多种类型
    1. (1)异常快:Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
    2. (2)支持丰富的数据类型: Redis支持开发人员常用的大多数数据类型,例如列表、集合、排序集和散列等等。
    3. (3)操作具有原子性:单进程单线程作业,所有操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
    4. (4)多实用工具:是一个多实用工具,可用于多种用例,如:缓存、消息队列(Redis本地支持发布/订阅)、应用程序中的任何短期数据。例如,WEB应用程序中的会话、网页命中计数等。
  1. 使用过Redis分布式锁么,它是什么回事?
  2. 先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放。
    这时候对方会告诉你说你回答得不错,然后接着问如果在setnx之后执行expire之前进程意外crash或者要重启维护了,那会怎么样?
    这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释放了。紧接着你需要抓一抓自己得脑袋,故作思考片刻,好像接下来的结果是你主动思考出来的,然后回答:我记得set指令有非常复杂的参数,这个应该是可以同时把setnx和expire合成一条指令来用的!对方这时会显露笑容,心里开始默念:摁,这小子还不错。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值