Linux下安装redis
mkdir /usr/local/redis && cd /usr/local/redis
下载:wget http://download.redis.io/releases/redis-3.0.5.tar.gz
解压:tar xzf redis-3.0.5.tar.gz
安装到指定目录:
cd redis-3.0.5
make PREFIX=/usr/local/redis install
将redis做成一个服务
复制并重命名脚本
cp /usr/local/redis/redis-3.0.5/utils/redis_init_script /etc/rc.d/init.d/redis因为默认redis服务不支持chkconfig,所以需要修改redis脚本,增加:
#chkconfig: 2345 80 90
注意脚本中EXEC、CLIEXEC的路径是否正确(对应redis-server、redis-cli的安装目录)复制conf文件到相应位置,与脚本中CONF配置一致
cp /usr/local/redis/redis-3.0.5/redis.conf /etc/redis/6379.conf添加并启动服务
chkconofig --add redis
service redis start
将redis的命令所在目录添加到系统参数PATH中
vi /etc/profile
export PATH="$PATH:/usr/local/redis/bin"
这样我们可以直接使用redis-cli来连接redis服务器了,不用每次都跑到bin目录下执行命令。
查看redis版本
redis-server --version // 查看服务端版本
redis-cli --version // 查看客户端版本
或者连接redis server后使用info命令也可以查看
基本数据类型和常用命令
数据类型
redis的键总是一个字符串对象,而值则可以是任意一种Redis对象类型,包括字
符串对象、哈希表对象、列表对象、集合对象和有序集合对象,分别对应字符串键
哈希表键、列表键、集合键和有序集合键。
redis会根据不同的使用场景来为一个对象设置不同的编码,从而来优化对象在某一场景下的效率。
常用命令列表
redis持久化
因为redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。
为了解决这个问题,redis提供了两种持久化机制:RDB & AOF。可以将redis在内存中的数据库状态保存到磁盘特定文件里,在redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。
RDB
在指定的时间间隔内将内存中的数据集快照写入磁盘。
通过命令执行
save // 阻塞服务器其它操作
bgsave // 通过子进程执行,非阻塞
redis自动间隔性保存
根据conf配置文件中save选项来设置:
如图,默认900秒1次修改、300秒10次修改、60秒10000次修改redis会自动执行RDB持久化。
AOF
以日志的形式记录服务器所处理的每一个写操作,如果服务器开启了AOF持久化(appendonly yes)功能,那么服务器会优先使用AOF文件来还原数据库状态。
持久化实现
追加至aof_buf缓存区 -> 文件写入 -> 文件同步(保存),服务器配置的appendfsync选项的值直接决定AOF持久化功能的效率和安全性。
AOF文件重写
因为AOF持久化是通过保存被执行的写命令来记录数据库状态的,所以随着服务器运行时间的流逝,AOF文件中的内容会越来越多,文件的体积也会越来越大,如果不加以控制的话,体积过大的AOF文件很可能对redis服务器、甚至整个宿主计算机造成影响,并且AOF文件的体积越大,使用AOF文件来进行数据还原所需的时间就越多。
为了解决AOF文件体积膨胀的问题,redis提供了AOF文件重写(rewrite)
功能。通过该功能,redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个AOF文件所保存的数据库状态相同,但新AOF文件不会包含任何浪费空间的冗余命令,所以新AOF文件的体积通常会比旧AOF文件的体积要小得多。
-
手动执行:
bgrewriteaof
设置自动触发条件: