Redis和Memcached类似,也属于k-v数据存储
Redis官网redis.io, 当前最新稳定版4.0.1
支持更多value类型,除了和string外,还支持hash、lists(链表)、sets(集合)和sorted sets(有序集合)
redis使用了两种文件格式:全量数据(RDB)和增量请求(aof)。全量数据格式是把内存中的数据写入磁盘,便于下次读取文件进行加载。增量请求文件则是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,这种类似于mysql binlog。
redis的存储分为内存存储、磁盘存储和log文件三部分
redis的安装
下载
cd /usr/local/src/
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
安装
cd redis-4.0.1
make && make install
修改配置文件
cp redis.conf /etc/redis.conf
vim /etc/redis.conf
# 修改如下配置
# 后台启动
daemonize yes
# 日志文件
logfile "/var/log/redis.log"
# 数据存储路径
dir /data/redis_data/
# 只能添加
appendonly yes
修改参数
mkdir /data/redis_data
echo "vm.overcommit_memory=2" >> /etc/sysctl.conf
echo "vm.overcommit_ratio=70" >> /etc/sysctl.conf
echo "net.core.somaxconn = 511" >> /etc/sysctl.conf
vim /etc/rc.local
echo never > /sys/kernel/mm/transparent_hugepage/enabled
启动服务
redis-server /etc/redis.conf
redis的持久化
Redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)
RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上。
AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。
其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。
如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。
Redis持久化相关参数
# /etc/redis.conf
save 900 1 # 表示每15分钟且至少有1个key改变,就触发一次持久化
save 300 10 # 表示每5分钟且至少有10个key改变,就触发一次持久化
save 60 10000 # 表示每60秒至少有10000个key改变,就触发一次持久
save "" # 这样可以禁用rdb持久化
appendonly yes # 如果是yes,则开启aof持久化
appendfilename "appendonly.aof" # 指定aof文件名字
appendfsync everysec # 指定fsync()调用模式,有三种no(不调用fsync),always(每次写都会调用fsync),everysec(每秒钟调用一次fsync)。
# 第一种最快,第二种数据最安全,但性能会差一些,第三种为这种方案,默认为第三种。
两种持久化方案都可以使用,服务重启优先选用AOF恢复数据