This commit is contained in:
CyC2018
2019-03-27 20:47:23 +08:00
6 changed files with 313 additions and 1 deletions

View File

@ -1,6 +1,59 @@
<<<<<<< HEAD
# 一、概述
Redis 是速度非常快的非关系型NoSQL内存键值数据库可以存储键和五种不同类型的值之间的映射
=======
<!-- GFM-TOC -->
* [一、概述](#一概述)
* [二、数据类型](#二数据类型)
* [STRING](#string)
* [LIST](#list)
* [SET](#set)
* [HASH](#hash)
* [ZSET](#zset)
* [三、数据结构](#三数据结构)
* [字典](#字典)
* [跳跃表](#跳跃表)
* [四、使用场景](#四使用场景)
* [计数器](#计数器)
* [缓存](#缓存)
* [查找表](#查找表)
* [消息队列](#消息队列)
* [会话缓存](#会话缓存)
* [分布式锁实现](#分布式锁实现)
* [其它](#其它)
* [五、Redis 与 Memcached](#五redis-与-memcached)
* [数据类型](#数据类型)
* [数据持久化](#数据持久化)
* [分布式](#分布式)
* [内存管理机制](#内存管理机制)
* [六、键的过期时间](#六键的过期时间)
* [七、数据淘汰策略](#七数据淘汰策略)
* [八、持久化](#八持久化)
* [RDB 持久化](#rdb-持久化)
* [AOF 持久化](#aof-持久化)
* [九、事务](#九事务)
* [十、事件](#十事件)
* [文件事件](#文件事件)
* [时间事件](#时间事件)
* [事件的调度与执行](#事件的调度与执行)
* [十一、复制](#十一复制)
* [连接过程](#连接过程)
* [主从链](#主从链)
* [十二、Sentinel](#十二sentinel)
* [十三、分片](#十三分片)
* [十四、一个简单的论坛系统分析](#十四一个简单的论坛系统分析)
* [文章信息](#文章信息)
* [点赞功能](#点赞功能)
* [对文章进行排序](#对文章进行排序)
* [参考资料](#参考资料)
<!-- GFM-TOC -->
# 一、概述
Redis 是速度非常快的非关系型NoSQL内存键值数据库可以存储键和五种不同类型的值之间的映射。
>>>>>>> 9f680db0cc99bd992c7f979442ecf458a33f9c1b
键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。
@ -316,7 +369,11 @@ List 是一个双向链表可以通过 lpop  lpush 写入和读取消
在分布式场景下,无法使用单机环境下的锁来对多个节点上的进程进行同步。
<<<<<<< HEAD
可以使用 Redis 自带的 SETNX 命令实现分布式锁除此之外还可以使用官方提供的 RedLock 分布式锁实现
=======
可以使用 Redis 自带的 SETNX 命令实现分布式锁除此之外还可以使用官方提供的 RedLock 分布式锁实现
>>>>>>> 9f680db0cc99bd992c7f979442ecf458a33f9c1b
## 其它
@ -358,7 +415,11 @@ Redis 可以为每个键设置过期时间当键过期时会自动删除
可以设置内存最大使用量,当内存使用量超出时,会施行数据淘汰策略。
<<<<<<< HEAD
Redis 具体有 6 种淘汰策略
=======
Redis 具体有 6 种淘汰策略
>>>>>>> 9f680db0cc99bd992c7f979442ecf458a33f9c1b
| 策略 | 描述 |
| :--: | :--: |
@ -508,7 +569,11 @@ Sentinel哨兵可以监听集群中的服务器并在主服务器进入
分片是将数据划分为多个部分的方法,可以将数据存储到多台机器里面,这种方法在解决某些问题时可以获得线性级别的性能提升。
<<<<<<< HEAD
假设有 4  Redis 实例 R0R1R2R3还有很多表示用户的键 user:1user:2... 有不同的方式来选择一个指定的键存储在哪个实例中
=======
假设有 4 Redis 实例 R0R1R2R3还有很多表示用户的键 user:1user:2... 有不同的方式来选择一个指定的键存储在哪个实例中
>>>>>>> 9f680db0cc99bd992c7f979442ecf458a33f9c1b
- 最简单的方式是范围分片例如用户 id  0~1000 的存储到实例 R0 用户 id  1001~2000 的存储到实例 R1 等等。但是这样需要维护一张映射范围表维护操作代价很高。
- 还有一种方式是哈希分片使用 CRC32 哈希函数将键转换为一个数字再对实例数量求模就能知道应该存储的实例。