auto commit

This commit is contained in:
CyC2018 2018-06-21 16:39:44 +08:00
parent e1e455724e
commit 621cbe8103

View File

@ -10,14 +10,13 @@
* [字典](#字典) * [字典](#字典)
* [跳跃表](#跳跃表) * [跳跃表](#跳跃表)
* [四、使用场景](#四使用场景) * [四、使用场景](#四使用场景)
* [缓存](#缓存)
* [计数器](#计数器) * [计数器](#计数器)
* [消息队列](#消息队列) * [缓存](#缓存)
* [查找表](#查找表) * [查找表](#查找表)
* [交集运算](#交集运算) * [消息队列](#消息队列)
* [排行榜](#排行榜) * [会话缓存](#会话缓存)
* [分布式 Session](#分布式-session) * [分布式锁实现](#分布式锁实现)
* [分布式锁](#分布式锁) * [其它](#其它)
* [五、Redis 与 Memcached](#五redis-与-memcached) * [五、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 # 五、Redis 与 Memcached