Redis入门基础

188 阅读4分钟

一、Redis简介及特点

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的键值 对 key-value 数据库。

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

二、redis支持的数据类型

redis不仅支持key-value类型的数据,还支持其他复杂的数据类型。
redis主要支持的数据类型有5种:
String字符串,Hash哈希 ,List列表,Set集合,zset有序集合(sorted set)。

  • String字符串
    string 类型是二进制安全的。 string 可以包含任何数据。比如jpg图片或者序列化的对象。
    string 类型是 redis 最基本的数据类型,string 类型的值最大能存储 512MB。
#set 设置值
set key value
#get 取值
get value
  • Hash哈希
    hash 是一个键值(key=>value)对集合。
    hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
# 如果key 被用过,需删除
del key
# hash 设置值
hmset key key1 value1 key2 value2
# hash 取值
hget key key1/key2
  • List列表
    list 是简单的字符串列表,按照插入顺序排序。添加一个元素到列表的头部(左边)或者尾部(右边)。
# 如果有其他类型key,需删除,否则报错
del key
# list 设置值 
lpush key value1  //lpush头部添加,可以多次value设置
# list 取值
lrange key 0 10   //0 ,10 是范围 
  • Set集合
    set是string类型的无序集合。
    集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
# 如果有其他类型key,需删除,否则报错
del key
# set 设置值
sadd key value1   //可以多次value设置
# set 取值
smembers key 
  • zset有序集合
    zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
    zset的成员是唯一的,但分数(score)却可以重复。
# 如果有其他类型key,需删除,否则报错
del key
# zset 设置值
zadd key 0 value1 //可以多次value设置; 0 是分数(次数),可重复
# zset 取值
zrangebyscore key 0 10  //通过分数排序去 0~10 之间的值

三、redis持久化

Redis 提供了两种持久化方式:RDB (Redis DataBase) (默认)和 AOF(Append Only File)。
ps : 持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。

1、RDB
在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。redis 重启会通过加载dump.rdb文件恢复数据。

附:
redis.conf 配置文件中RDB持久化配置信息:

# RDB 持久化,快照保存频率
# 900秒内,如果超过1个key被修改,则发起快照保存
# 300秒内,如果超过10个key被修改,则发起快照保存
# 60秒内,如果1万个key被修改,则发起快照保存
save 900 1
save 300 10
save 60 10000

# 启用rdb文件压缩手段,默认为yes。
rdbcompression yes

2、AOF
Redis 默认不开启。是以文件形式存储。
它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。
redis 重启 会根据日志文件的内容将 写指令从前到后执行一次以完成数据的恢复工作。

附:
redis.conf 配置文件中AOF持久化配置信息:

# 开启 AOF 持久化
appendonly yes

总结

  1. Redis 默认开启RDB持久化方式,在指定的时间间隔内,执行指定次数的写操作,则将内存中的数据写入到磁盘中。
  2. RDB 持久化适合大规模的数据恢复但它的数据一致性和完整性较差。
  3. Redis
    需要手动开启AOF持久化方式,默认是每秒将写操作日志追加到AOF文件中。
  4. AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
  5. Redis 针对 AOF文件大的问题,提供重写的瘦身机制。
  6. 若只打算用Redis 做缓存,可以关闭持久化。
  7. 若打算使用Redis 的持久化。建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB。

参考资料:
Redis基础知识
Redis菜鸟教程