1. 为什么选 Redis
1.1 Redis 是什么?
Redis 是 No-SQL 数据库中使用较为广泛的非关系型内存数据库,常用于网站缓存,提升性能。
1.2 Redis 与 Mancache 的区别
1.2.1 Mancache
Mamcache 类似于 Hash
- 支持简单数据类型
- 不支持持久化储存
- 不支持主从
- 不支持分片
1.2.2 Redis
- Redis 有 8 种数据结构,常用的有 String、Set、SortedSet、List、Hash
- 支持持久化储存
- 支持主从
- 支持分片
2. Redis 数据类型
2.1 String
Redis 没有使用 C Lang 的字符串(以 \0 结尾),而是自建了一种叫简单动态字符串(Simple Dynamic String, SDS)。

- free:表示 SDS 分配到的未使用空间
- len:表示字符串长度
- buf:字符数组
# 创建字符串
set key value
2.2 List
Redis 列表底层是个双端链表

# 创建链表 或 左右添加元素(lpush,rpush)
lpush numbers 1
2.3 Hash
Hash 类似于 Python 中的 Dict
# 创建Hash
hmset table_name key value
# 通过键值获取元素
hget table_name key
# 通过键值删除元素
hdel table_name key
2.4 Set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
# 创建 Set 与 添加元素
sadd key values
# 删除元素
spop key
# set 长度
scard key
# set 全部成员
smembers key
2.5 SortedSet
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
# 创建 SortedSet 与 添加元素
zadd key score1 value1 [score2 value2...]
# 删除元素
zpop key
# set 长度
zcard key
# 访问指定区间的值
zrange key start value [withscore]