redis安装、配置与使用

来源:互联网 发布:中国足球知乎 编辑:程序博客网 时间:2024/06/05 10:11

Redis安装、配置与使用

使用版本:redis-3.2.8
官网地址:https://redis.io
中文网:http://www.redis.cn
系统环境:centos6.5

一、主从服务配置

解压与编译
tar -zxf redis-3.2.8.tar.gz
cd redis-3.2.8
make

复制两个配置文件,一个master,一个slave
cp redis.conf redis-master.conf
cp redis.conf redis-slave.conf

配置redis-master.conf(修改以下项所对应的值)
bind 192.168.137.10
port 6379
daemonize yes
pidfile /var/run/redis_6379.pid
logfile “/data/redis/log_6379”
dbfilename dump_6379.rdb
dir /data/redis/
appendonly yes
appendfilename “appendonly_6379.aof”

启动master
./src/redis-server redis-master.conf

连接master(设置foo值)
./src/redis-cli -h 192.168.137.10 -p 6379
ping
set foo “bar”
get foo
quit

配置redis-slave.conf(修改以下项所对应的值)
bind 192.168.137.10
port 6380
daemonize yes
pidfile /var/run/redis_6380.pid
logfile “/data/redis/log_6380”
dbfilename dump_6380.rdb
dir /data/redis/
slaveof 192.168.137.10 6379
appendonly yes
appendfilename “appendonly_6380.aof”

启动slave
./src/redis-server redis-slave.conf

连接slave(发现foo已经存在slave中了~)
./src/redis-cli -h 192.168.137.10 -p 6380
ping
get foo
quit

note1:一个小试验
在slave配置中有个参数slave-read-only默认为no,就是说在slave的redis上只允许读不允许写,在这种情况下在slave的redis上写值会报错,而当slave-read-only为yes时可以在slave的redis上写值但是master上不会有这个值

note2:关闭防火墙
若想要远程连接这些redis,得注意防火墙对对应端口的开闭,此处简单粗暴的关闭防火墙命令:service iptables stop

二、部分配置解释

daemonize:是否以守护进程的方式运行,默认为no

bind:绑定ip

port:监听端口

timeout:当客户端闲置多长时间后关闭连接,0表示关闭该功能

logfile:日志文件

save seconds changes:多长时间内有多少次更新操作,就将数据同步到rdb数据文件,可以多个条件配合
{
save 900 1
save 300 10
save 60 10000
分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
}

rdbcompression:rdb存储是否压缩数据,默认为yes,采用LZF压缩

dbfilename:rdb存储数据文件名

slaveof masterip masterport:当设置本机为slave服务时,设置master服务的IP地址及端口,在redis启动时,它会自动从master进行数据同步

masterauth master-password:设置master密码

requirepass foobared:设置redis连接密码,默认关闭

maxclients:同一时间最大客户端连接数,0表示不作限制

appendonly:是否在每次更新操作后进行日志记录,默认为no

appendfilename:只追加操作的文件,默认为appendonly.aof

appendfsync:更新aof日志的条件,共有3个可选值,no表示等操作系统进行数据缓存同步到磁盘(快),always表示每次更新操作后手动调用fsync()将数据写到磁盘(慢,安全),everysec表示每秒同步一次(折衷,默认值)

note3:redis持久化机制RDB&AOF

RDB持久化:异步将内存中的数据写到rdb文件中(dump.rdb),能够在指定的时间间隔对数据进行快照存储,通过save seconds changes参数设置,相关参数dbfilename 、dir、rdbcompression等,在redis意外停掉的时候会丢失部分数据未转存到rdb文件中

AOF持久化:记录每次对服务器写的操作,记录在只追加操作的文件中(appendonly.aof),当服务器重启的时候会重新执行这些命令来恢复原始的数据,相关参数appendonly、appendfilename、appendfsync等

当两种持久化机制都被打开的时候,redis重启时会优先载入AOF文件来恢复原始的数据,因为通常情况下AOF文件保存的数据集比RDB文件保存的数据集要完整,AOF命令以redis协议追加保存每次写的操作到文件末尾,redis还能对AOF文件进行后台重写,使得AOF文件的体积不至于过大

写时复制(copy-on-write):
RDB创建快照,redis保存dump.rdb文件时都是对新的临时文件的写入,写完后用新的临时文件替换原来的RDB文件,并删除旧的RDB文件,RDB文件一旦被创建, 就不会进行任何修改,所以在任何时候复制RDB文件都是安全的;
AOF重写,redis在创建新AOF文件的过程中,会继续将命令追加到现有的AOF文件里面,即使重写过程中发生停机,现有的AOF文件也不会丢失,而一旦新AOF文件创建完毕,redis就会从旧AOF文件切换到新AOF文件,并开始对新AOF文件进行追加操作。

redis提供了对rdb已损坏文件进行修复的工具redis-check-rdb,以及对aof已损坏文件进行修复的工具redis-check-aof

三、部分命令解释

select :选择数据库
config get/set:配置文件属性获取、设置

key相关命令
keys pattern:查找匹配key
exists key:是否存在key
dump key:存储key到rdb
expire key seconds:设置key的过期时间(秒)
persist key:移除key的过期时间
ttl/pttl key:以秒/毫秒为单位返回key剩余过期时间
del key:删除key
move key db:移动key
renamenx key newkey:newkey不存在时重命名key为newkey
type key:key储存的类型

string相关命令
set key value:设置值
get key:获取值
getrange key start end:截取子字符串
setrange key offset value:从offset开始设置后续字符
getset key value:设置新值返回旧值
setex key seconds value:设置值以及key的过期时间
strlen key:字符串长度
mget key1 [key2..]:获取多个key的值
mset key value [key value …]:设置多个键值对
incr key:数字值原子增1
incrby key n:数字值原子增n
incrbyfloat key f:数字值原子增浮点数f
decr key:数字值原子减1
decrby key n:数字值原子减n
append key value:字符串追加

list相关命令
lpush key value [value …]:从队列左边入队一个或多个元素
rpush key value [value …]:从队列右边入队一个或多个元素
lpop key:从队列左边出队一个元素
rpop key:从队列右边出队一个元素
lindex key index:获取队列index位置的元素
lset key index value:设置队列index处元素的值
linsert key before|after pivot value:插入一个元素在pivot的前面或后面
lrem key count value:从队列里移除前count次出现的值为value的元素,count>0表示从头往尾移除,count<0表示从尾往头移除,count=0表示移除所有值为 value 的元素。
blpop key1 [key2 ] timeout:阻塞模式从队列左边出队一个元素
brpop key1 [key2 ] timeout:阻塞模式从队列右边出队一个元素
rpoplpush source destination:从source队列右边出队一个元素入队到destination队列左边
brpoplpush source destination timeout:阻塞模式从source队列右边出队一个元素入队到destination队列左边
lrange key start stop:获取队列中start到stop的元素,下标从0开始,从左边开始,负数代表从右边开始
ltrim key start stop:去掉start到stop两边的元素
llen key:获取队列元素数量

hash相关命令
hkeys key:获取所有域
hvals key:获取所有值
hgetall key:获取全部域和值
hexists key field:某个域是否存在
hget key field:获取某个域的值
hset key field value:设置某个域的值
hdel key field [field …]:删除一个或多个域
hmget key field [field …]:获取一个或多个域的值
hmset key field value [field value …]:设置一个或多个域的值
hincrby key field n:某个域数字值加n
hincrbyfloat key field f:某个域数字值加f
hlen key:域的数量
hstrlen key field:某个域的值的长度

set相关命令
sadd key member [member …]:添加一个或多个元素
srem key member [member …]:删除一个或多个元素
smembers key:获取集合的所有元素
spop key [count]:删除并获取集合里面的count个元素
smove source destination member:移动集合的某个元素到另一个集合
scard key:元素的数量
sinter key [key …]:交集
sunion key [key …]:并集
sdiff key [key …]:补集
sismember key member:属于

sorted set相关命令
······

:set和sorted set中是不会有重复元素的

0 0
原创粉丝点击