Redis是基于内存的键值型(key - value)的 NoSQL数据库(非关系型数据库)。key一般是String类型,而value支持丰富的数据类型,包括String、Hash、List、Set、SortedSet这五种基本类型,此外还有GEO、BitMap、HyperLogLog 等其他类型。

Redis有哪些特点?

  • .读写性能优异

·基于内存,内存的访问速度是比磁盘快很多的
·采用单线程模型,不存在多线程的上下文切换,不需要考虑锁的问题
·使用IO多路复用模型,让 Redis 不需要创建额外的线程来监听客户端的大量请求,减少性能的消耗
·内置了多种优化过的数据结构实现·

  • 所有操作命令都是原子性的
  • 支持事务

允许多个命令按顺序执行并不会被打断

不支持回滚

  • 支持数据持久化

.RDB:通过创建快照来获得存储在内存里面的数据在某个时间点上的副本

AOF:执行完更改数据的命令后,会将该命令记录到日志中

  • 支持分布式部署

Redis有哪些常见的应用场景?

  • 数据缓存

将热点数据缓存到 Redis,提高数据读取和系统响应速度。·

将用户凭证(如token)存入Redis,实现单点登录。

  • .分布式锁

 利用 Redis的setnx命令实现互斥,对于setnx命令,如果key不存在则会设置 key的值并返回1,否则直接返回0。
·因此,可以通过setnx命令去尝试获取锁,获取锁成功才能继续执行相应业务。

·此外,还得给锁设置一个过期时间,防止系统出现问题导致锁无法释放。

使用命令为:

redis 7常用那个版本 redis有哪些版本_java

 

如果需要更复杂的需求,可以采用 Redisson,它里面提供了多种分布式锁的实现。

  • 限时业务的运用

Redis 中可以使用expire 命令设置一个键的生存时间,到时间后Redis 会删除它。利
用这一特性可以运用在限时的优惠活动信息、手机验证码等业务场景。

  • 全局唯一ID

Redis由于incrby命令可以实现原子性的递增,所以可以用于唯一分布式序列号的生
成。

  • 消息队列

.基于List 实现:利用LPUSH 和 RPOP;

基于PUB/SUB实现;
.基于Stream 实现。·

  • 共同关注

·由于Set支持交集、并集、差集等功能,可以实现共同关注、共同爱好等功能。

  • 排行榜

·由于SortedSet是支持排序的,可以用于各种排行榜的场景。

  • 统计活跃用户

·利用 BitMap,以日期为key,用户ID为offset,当日活跃过就设置为1。

  • 页面统计UV

将访问指定页面的每个用户ID添加到 HyperLogLog中,调用 PFCOUNT 获取。