redis(上)

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恢复数据

最后更新于

这有帮助吗?