赞
踩
redis: redis 即 Remote Dictionary Server,用中文翻译过来可以理解为远程数据服务或远程字典服务。其是使用 C 语言的编写的 key-value 存储系统。
缓存:减轻 MySQL 的查询压力,提升系统性能;
排行榜:利用 Redis 的 SortSet(有序集合)实现;
计算器/限速器:利用 Redis 中原子性的自增操作,我们可以统计类似用户点赞数、用户访问数等。这类操作如果用 MySQL,频繁的读写会带来相当大的压力;限速器比较典型的使用场景是限制某个用户访问某个 API 的频率,常用的有抢购时,防止用户疯狂点击带来不必要的压力;
好友关系:利用集合的一些命令,比如求交集、并集、差集等。可以方便解决一些共同好友、共同爱好之类的功能;
消息队列:除了 Redis 自身的发布/订阅模式,我们也可以利用 List 来实现一个队列机制,比如:到货通知、邮件发送之类的需求,不需要高可靠,但是会带来非常大的 DB 压力,完全可以用 List 来完成异步解耦;
Session 共享:Session 是保存在服务器的文件中,如果是集群服务,同一个用户过来可能落在不同机器上,这就会导致用户频繁登录;采用 redis 保存 Session 后,无论用户落在哪台机器上都能够获取到对应的 Session 信息。
数据量太大、数据访问频率非常低的业务都不适合使用 Redis,数据太大会增加成本,访问频率太低,保存在内存中纯属浪费资源。
redis 总共有八种数据结构,五种基本数据类型和三种特殊数据类型。
五种基本数据类型
string :字符串类型,常被用来存储计数器,粉丝数等,简单的分布式锁也会用到该类型。
hashmap :key - value 形式的,value 是一个map。
list :基本的数据类型,列表。在 Redis 中可以把 list 用作栈、队列、阻塞队列。
set :集合,不能有重复元素,可以做点赞,收藏等。
zset :有序集合,不能有重复元素,有序集合中的每个元素都需要指定一个分数,根据分数对元素进行升序排序。可以做排行榜。
三种特殊数据类型
geospatial :Redis 在 3.2 推出 Geo 类型,该功能可以推算出地理位置信息,两地之间的距离。
hyperloglog :基数:数学上集合的元素个数,是不能重复的。这个数据结构常用于统计网站的 UV。
bitmap :bitmap 就是通过最小的单位 bit 来进行0或者1的设置,表示某个元素对应的值或者状态。一个 bit 的值,或者是0,或者是1;也就是说一个 bit 能存储的最多信息是2。bitmap 常用于统计用户信息比如活跃粉丝和不活跃粉丝、登录和未登录、是否打卡等。
Redis 在 4.0 的时候引入了多线程来做大缓存的清除处理工作,主要是体现在大数据的异步删除功能上,例如 unlink key、flushdb async、flushall async 等,先清除 key ,接着异步清除对应的 value。
在 Redis 6.0 之前的网络模型都是标准的单线程 reactor 模型。在 6.0 开始引入了一个非标准的多线程 reactor 模型,sub-reactor 此时会使用 socket 读取 client 请求,并处理命令的解析,然后具体写还是在主线程上执行。
不会,其实 redis 还是使用单线
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。