centos6下安装使用redis
安装redis
-
yum添加epel源
yum install epel-release
-
用yum安装redis
yum install redis
-
Redis 服务端配置
vim /etc/redis.conf
/var/lib/redis
启动与停止
-
启动
service redis start
-
停止
service redis stop
-
重启
service redis restart
-
查看是否启动
ps aux|grep redis
若出现如下东西,就代表已启动,第一列是进程名
redis 2059 0.2 0.5 139488 5380 ? Ssl 03:24 0:00 /usr/bin/redis-server 127.0.0.1:6379
-
设置开机自启
第一次设置需要在自启动配置中添加redis
chkconfig --add redis
启动开机自启
chkconfig redis on
关闭开机自启
chkconfig redis off
-
连接redis-server
redis在安装的时候自带了一个客户端redis-cli,我们可以使用它来连接redis
redis-cli -p 6379 -h 127.0.0.1
其中,6379是默认端口号,127.0.0.1是ip地址
基本操作
redis存储的格式类似于python的字典
在这里仅记录常用的操作,详细操作请看redis命令文档
查看redis中所有的key
keys *
删除指定键值对
del key
删除所有键值对
flushall
字符串操作
-
添加
set key value
如果key不存在,就创建一个键值对,如果已存在,则更新替换其值
注意:在添加的时候,如果value中存在空格,则需要用双引号把value括起来,如果value中存在一些特殊字符,可以用转义字符,如
\"
表示双引号 -
获取
get key
如果key不存在,则返回一个nil
-
设置过期时间
如果没有设置过期时间,则是永久有效,过期时间timeout的单位是秒
在设置值之后指定过期时间:
expire key timeout
在设置值的时候指定过期时间:
set key value ex timeout
-
查看过期时间
ttl key
若已过期,则返回-2
列表操作
-
创建和添加列表元素
- 在key表头(左边)添加元素:
lpush key value [value ...]
- 在key表尾(右边)添加元素:
rpush key value [value ...]
如果key不存在,则在执行语句上面语句时会自动创建,并添加指定元素
当key存在,但不是列表类型时会报错
-
查看列表中的元素
lrange key start stop
其中start和stop分别表示起始(从0开始)和结束(包括)位置,如果想要查看所有元素,则指定start和stop分别为
0 -1
。可见,redis的索引与python类似,负数表示从右边开始的第几个。
-
移除列表中的元素
-
移除头元素
lpop key
-
移除尾元素
rpop key
-
移除指定元素
lrem key count value
删除key列表中值为value的元素,其中count表示删除元素的个数,count表示删除的个数,具体如下
- count>0:从表头开始删除count个值为value的元素
- count<0:从表尾开始删除-count个值为value的元素
- count=0:删除所有值为value的元素
-
-
获取列表中元素个数
llen key
-
获取对应索引的元素
lindex key index
-
更新列表中的元素
lset key index value
集合操作
-
创建和添加集合元素
sadd key value [value ...]
-
查看元素
smembers key member
-
移除元素
srem key member [member...]
-
查看集合中元素个数
scard key
-
获取多个集合的交集
sinter key [key...]
-
获取多个集合的并集
sunion key [key...]
-
获取多个集合的差集
sdiff key [key...]
哈希操作
在redis中,字典中的字典叫做哈希表
-
创建哈希表并添加字段值
hset key field value [field value...]
将哈希表
key
中的字段field
值设置为value
-
获取哈希中field对应的值
hget key field
-
删除field中的某个field
hdel key field [field]
-
获取哈希表中所有的field和value
hgetall key
-
获取哈希表中所有的field
hkeys key
-
获取哈希表中所有的value
hvals key
-
获取哈希表中总共有多少键值对
hlen key
事务操作
Reids事务可以一次执行多个命令,事务具有如下特征
- 隔离操作:事务中的所有命令都会序列化、按顺序执行,不会被其他命令打扰
- 原子操作:事务中的命令要么全部被执行,要么全部不执行,不可分割
-
开启事务
multi
后面的命令,都会加入事务中
-
执行事务
exec
-
取消事务
discard
会将multi后的所有命令都取消
-
监视key
watch key [key...]
监听一个或者多个key,如果在事务开始之后,事务执行之前这些key被其他命令所改动,那么事务将不会执行
事务执行完后,将会自动取消监视
-
取消监视
unwatch
发布/订阅
-
订阅频道的消息
subscribe channel [channel]
这样会一直监听这个频道有没有消息
-
在某个频道发布消息
publish channel message
发布消息,此时在订阅该频道的链接会接收到此消息
持久化
持久化,就是把内存中的数据保存到硬盘当中,类似于备份,redis有两种持久化的机制(文件):
- RDB(redis database)
- AOF(Append-only file)
这两种机制都可以在配置文件中进行相关的设置
编辑配置文件
vim /etc/redis.conf
备份文件的位置
cd /
cd /var/lib/redis
RDB和AOF详情与比较
RDB | AOF | |
---|---|---|
开启 | 默认就是开启的 | 把配置文件的appendonly置为yes |
关闭 | 把配置文件中所有的save注释掉 | 把配置文件的appendonly置为no |
同步机制 | 配置文件的save 900 1,意思是:计时器到900秒时,如果数据至少进行了1次更改,就做一次同步备份 | 配置文件的appendfsync always代表每次数据更新同步,appendfsync everysec代表每秒同步 |
存储内容 | 存储的是redis中具体的值,也就是内存里的值 | 存储的是执行的更新数据命令 |
存储文件路径 | dir指定路径,dbfilename指定文件名 | dir指定路径,appendfilename指定文件名 |
优点 | (1)存储数据到文件会进行压缩,文件体积比aof小 (2)因为存储的是redis具体的值,所以恢复速度快 (3)更适合于备份 | (1)同步的频率更高,服务器故障后丢失的数据少 (2)存储不需要压缩,只是将命令直接加入文件,速度快 (3)如果aof文件过大,会对存储的命令重写,删除冗余的命令,保留最小命令集合 |
缺点 | (1)每次同步都会重新保存整个Redis中的数据,所以当数据量较大或者CPU紧张时,比较耗时 (2)同步需要时间,且是按照一定频率来的,如果在同步前发生了故障,就会造成数据丢失 | (1)文件没有压缩,体积大 (2)恢复速度慢 (3)从整体效率上来说,由于频率高,所以效率可能会有点慢 (4)当服务器故障时,数据丢失少 |
如何选择
如果数据非常重要,不能容许丢失,那么就用AOF,否则,就用RDB,如果服务器性能足够,你还可以两个都用(小孩子才做选择题)
手动备份
BGSAVE
使用这条命令,可以在后台新建一个子进程fork
,由子进程来备份,主进程继续处理数据,上面两种同步机制也都是定时/定次用这条命令实现的
设置密码
打开配置文件,在命令模式下使用/
来搜索requirepass
,这个变量就是密码变量,默认时注释的,也就是默认没有密码
将requirepass取消注释后,赋值为你想要设置的密码即可,例如
requirepass password
重启应用配置后,依然可以连接,但只有输入密码后才可以操作数据库,如果不输入就操作,会报错的,输入密码有两种方式
-
连接后输入
auth password
-
连接时输入
用
-a
参数指定密码redis-cli -p 6379 -h 127.0.0.1 -a password
从其他主机连接redis
在配置文件中,搜索bind
,这个变量就是设置允许其他主机用哪个IP地址来连接,也就是说,这个bind应该设置成运行redis的机器的地址,而不是要连接reids的主机的地址
bind 127.0.0.1 本机的ip地址
注意注意注意:一定要让防火墙开放端口(踩过坑)