发布时间:2024-05-21 09:01
1.Redis最长用来做缓存,是实现分布式缓存的首先中间件
2.Redis可以作为数据库,实现诸如点赞,关注,排行等对性能要求极高的互联网需求
3.Redis可以作为计算工具,能用很小的代价,统计诸如PV/UV,用户在线天数等数据
4.Redis还有很多其他的使用场景,例如:可以实现分布式锁,可以作为消息队列使用。
Redis是一种基于键值对的NoSQL数据库,而键值对的值是由多种数据结构和算法组成的。Redis的数据都存储与内存中,因此它的速度惊人,读写性能可达10万/秒,远超关系型数据库
关系型数据库是基于二维数据表来存储数据的,它的数据格式更为严谨,并支持关系查询。关系型数据库的数据存储于磁盘上,可以存放海量的数据,但性能远不如Redis
区别:
NoSQL存放在内存中,关系型数据库存放在磁盘中
1.Redis支持5中核心的数据类型,分别是字符串,哈希,列表,集合,有序集合
2.Redis还提供了Bitmap,HyperLogLog,Geo类型,但是这些都是基于上述的核心数据类型实现的
3.Redis在5.0新增加了Streams数据类型,它是一个功能强大的、支持多播的、可持久化的消息队列。
1.单线程避免了线程切换和竞争所产生的消耗
2.Redis大部分操作在内存上完成
3.Redis采用了IO多路复用机制,使其在网络IO操作中能并发处理大量的客户端请求,实现高吞吐率。
set:即集合
集合中的元素是无序、不可重复的,一个集合最多能存储232-1个元素;
集合除了支持对元素的增删改查之外,还支持对多个集合取交集、并集、差集。
zset:即有序集合
有序集合保留了集合元素不能重复的特点;
有序集合会给每个元素设置一个分数,并以此作为排序的依据;
有序集合不能包含相同的元素,但是不同元素的分数可以相同。
参考答案
很多时候,要确保事务中的数据没有被其他客户端修改才执行该事务。Redis提供了watch命令来解决这类问题,这是一种乐观锁的机制。客户端通过watch命令,要求服务器对一个或多个key进行监视,如果在客户端执行事务之前,这些key发生了变化,则服务器将拒绝执行客户端提交的事务,并向它返回一个空值。
参考答案
列表是线性有序的数据结构,它内部的元素是可以重复的,并且一个列表最多能存储2^32-1个元素。列表包含如下的常用命令:
lpush/rpush:从列表的左侧/右侧添加数据;
lrange:指定索引范围,并返回这个范围内的数据;
lindex:返回指定索引处的数据;
lpop/rpop:从列表的左侧/右侧弹出一个数据;
blpop/brpop:从列表的左侧/右侧弹出一个数据,若列表为空则进入阻塞状态。
参考答案
热点数据不设置过期时间,使其达到“物理”上的永不过期,可以避免缓存击穿问题;
在设置过期时间时,可以附加一个随机数,避免大量的key同时过期,导致缓存雪崩。