auto commit
This commit is contained in:
parent
e1e455724e
commit
621cbe8103
|
@ -10,14 +10,13 @@
|
|||
* [字典](#字典)
|
||||
* [跳跃表](#跳跃表)
|
||||
* [四、使用场景](#四使用场景)
|
||||
* [缓存](#缓存)
|
||||
* [计数器](#计数器)
|
||||
* [消息队列](#消息队列)
|
||||
* [缓存](#缓存)
|
||||
* [查找表](#查找表)
|
||||
* [交集运算](#交集运算)
|
||||
* [排行榜](#排行榜)
|
||||
* [分布式 Session](#分布式-session)
|
||||
* [分布式锁](#分布式锁)
|
||||
* [消息队列](#消息队列)
|
||||
* [会话缓存](#会话缓存)
|
||||
* [分布式锁实现](#分布式锁实现)
|
||||
* [其它](#其它)
|
||||
* [五、Redis 与 Memcached](#五redis-与-memcached)
|
||||
* [数据类型](#数据类型)
|
||||
* [数据持久化](#数据持久化)
|
||||
|
@ -333,37 +332,43 @@ int dictRehash(dict *d, int n) {
|
|||
|
||||
# 四、使用场景
|
||||
|
||||
## 缓存
|
||||
|
||||
将热点数据放到内存中,设置内存的最大使用量以及过期淘汰策略来保证缓存的命中率。
|
||||
|
||||
## 计数器
|
||||
|
||||
Redis 这种内存数据库能支持计数器频繁的读写操作。
|
||||
可以对 String 进行自增自减运算,从而实现计数器功能。
|
||||
|
||||
## 消息队列
|
||||
例如对于网站访问量,如果使用 MySQL 数据库进行存储,那么每访问一次网站就要对磁盘进行读写操作。而对 Redis 这种内存型数据库的读写性能非常高,很适合存储这种频繁读写的计数量。
|
||||
|
||||
使用 List 数据类型,它是双向链表。
|
||||
## 缓存
|
||||
|
||||
将热点数据放到内存中,设置内存的最大使用量以及淘汰策略来保证缓存的命中率。
|
||||
|
||||
## 查找表
|
||||
|
||||
使用 HASH 数据类型。
|
||||
例如 DNS 记录就很适合使用 Redis 进行存储。
|
||||
|
||||
## 交集运算
|
||||
查找表和缓存类似,也是利用了 Redis 快速的查找特性。但是查找表的内容不能失效,而缓存的内容可以失效。
|
||||
|
||||
使用 SET 类型,例如求两个用户的共同好友。
|
||||
## 消息队列
|
||||
|
||||
## 排行榜
|
||||
List 是一个双向链表,可以通过 lpop 和 lpush 写入和读取消息。
|
||||
|
||||
使用 ZSET 数据类型。
|
||||
不过最好使用 Kafka、RabbitMQ 等消息中间件。
|
||||
|
||||
## 分布式 Session
|
||||
## 会话缓存
|
||||
|
||||
多个应用服务器的 Session 都存储到 Redis 中来保证 Session 的一致性。
|
||||
在分布式场景下具有多个应用服务器,可以使用 Redis 来统一存储这些应用服务器的会话信息,使得某个应用服务器宕机时不会丢失会话信息,从而保证高可用。
|
||||
|
||||
## 分布式锁
|
||||
## 分布式锁实现
|
||||
|
||||
除了可以使用 SETNX 命令实现分布式锁之外,还可以使用官方提供的 RedLock 分布式锁实现。
|
||||
在分布式场景下,无法使用单机环境下的锁实现。当多个节点上的进程都需要获取同一个锁时,就需要使用分布式锁来进行同步。
|
||||
|
||||
除了可以使用 Redis 自带的 SETNX 命令实现分布式锁之外,还可以使用官方提供的 RedLock 分布式锁实现。
|
||||
|
||||
## 其它
|
||||
|
||||
Set 可以实现交集、并集等操作,例如共同好友功能。
|
||||
|
||||
ZSet 可以实现有序性操作,例如排行榜功能。
|
||||
|
||||
# 五、Redis 与 Memcached
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user