redission操作redis redission使用场景

本文目录一览:

  • 1、基于Redission使用Redis的Stream
  • 2、大厂面试题详解:如何用Redis实现分布式锁?
基于Redission使用Redis的Stream1、这里 , 有个group名字叫testGroup31,里面有消费者6个,pending代表目前有6个数据被读取了,但没有ack 。last_delivered-id代表这个group目前读到哪条消息 。
【redission操作redis redission使用场景】2、创建Stream的名称是 stream-key 创建2个消息 , aa和bb 表示从最后一个元素消费,不包括Stream中的最后一个元素 , 即消费最新的消息 。
3、Stream是Redis0 引入的一个新的数据类型 , 官方把它定义为:以更抽象的方式模拟日志的数据结构 。
4、虽然Redis提供了发布/订阅的功能,但是并不完善,导致基本没有合适的场景能够使用 。PubSub缺点:直到Redis0出现之后,出现了Stream这种数据结构,才终于完善了Redis的消息机制。
5、首先默认的队列监听是自动确认的,但是如出现异常不会自动确认,默认的失败机制是不断重试,这样会影响mq性能 。其次可以在配置文件中指定失败重试次数和重试间隔 。
6、无序集合可以用整数集合(intset)或者字典实现 Redis的0版本中 , 放出一个新的数据结构Stream 。
大厂面试题详解:如何用Redis实现分布式锁?1、直接使用 set(key,value , NX,EX,timeout) 指令,同时设置锁和超时时间 。以上两种方法,使用哪种方式都可以 。释放锁的脚本两种方式都一样,直接调用 Redis 的 del 指令即可 。
2、如果想要实现可重入的分布式锁的话,需要在设置value的时候加上线程信息和加锁次数的信息 。但是这是简单的思路,如果加上过期时间等问题之后,可重入锁就可能比较复杂了 。
3、如返回1,则该客户端获得锁 , 把lock.foo的键值设置为时间值表示该键已被锁定,该客户端最后可以通过DEL lock.foo来释放该锁 。如返回0,表明该锁已被其他客户端取得,这时我们可以先返回或进行重试等对方完成或等待锁超时 。
4、分布式锁的实现方式如下:基于数据库实现分布式锁:主要是利用数据库的唯一索引来实现,唯一索引天然具有排他性,这刚好符合我们对锁的要求:同一时刻只能允许一个竞争者获取锁 。
5、我们今天就来实现用 Redis 来实现分布式锁 , 并且要学会怎么使用 。准备使用 Jedis 的 jar 包,在项目中导入 jar 包 。

    推荐阅读