1

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做成一个服务

  1. 复制并重命名脚本
    cp /usr/local/redis/redis-3.0.5/utils/redis_init_script /etc/rc.d/init.d/redis

  2. 因为默认redis服务不支持chkconfig,所以需要修改redis脚本,增加:
    #chkconfig: 2345 80 90
    注意脚本中EXEC、CLIEXEC的路径是否正确(对应redis-server、redis-cli的安装目录)

  3. 复制conf文件到相应位置,与脚本中CONF配置一致
    cp /usr/local/redis/redis-3.0.5/redis.conf /etc/redis/6379.conf

  4. 添加并启动服务
    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命令
redis命令

redis持久化

因为redis是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。
为了解决这个问题,redis提供了两种持久化机制:RDB & AOF。可以将redis在内存中的数据库状态保存到磁盘特定文件里,在redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。

RDB

在指定的时间间隔内将内存中的数据集快照写入磁盘。

通过命令执行

save  // 阻塞服务器其它操作
bgsave  // 通过子进程执行,非阻塞

redis自动间隔性保存

根据conf配置文件中save选项来设置:
clipboard.png
如图,默认900秒1次修改、300秒10次修改、60秒10000次修改redis会自动执行RDB持久化。

AOF

以日志的形式记录服务器所处理的每一个写操作,如果服务器开启了AOF持久化(appendonly yes)功能,那么服务器会优先使用AOF文件来还原数据库状态。

持久化实现

追加至aof_buf缓存区 -> 文件写入 -> 文件同步(保存),服务器配置的appendfsync选项的值直接决定AOF持久化功能的效率和安全性。
clipboard.png

AOF文件重写

因为AOF持久化是通过保存被执行的写命令来记录数据库状态的,所以随着服务器运行时间的流逝,AOF文件中的内容会越来越多,文件的体积也会越来越大,如果不加以控制的话,体积过大的AOF文件很可能对redis服务器、甚至整个宿主计算机造成影响,并且AOF文件的体积越大,使用AOF文件来进行数据还原所需的时间就越多。
为了解决AOF文件体积膨胀的问题,redis提供了AOF文件重写(rewrite)功能。通过该功能,redis服务器可以创建一个新的AOF文件来替代现有的AOF文件,新旧两个AOF文件所保存的数据库状态相同,但新AOF文件不会包含任何浪费空间的冗余命令,所以新AOF文件的体积通常会比旧AOF文件的体积要小得多。

  • 手动执行:

    bgrewriteaof
    
  • 设置自动触发条件:
    clipboard.png


sunnyxd
529 声望30 粉丝