Redis

438 阅读2分钟

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)。

SDS 示例
其中:

  • free:表示 SDS 分配到的未使用空间
  • len:表示字符串长度
  • buf:字符数组
# 创建字符串
set key value

2.2 List

Redis 列表底层是个双端链表

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]

3. 持久化

3.1 RDB

3.2 AOF

4. Redis 多机实现

4.1 复制

4.2 哨兵

4.3 集群

5. 发布与订阅