1.配置
1.1安装redis
1、检查是否有redis yum 源
yum install redis
2、下载fedora的epel仓库
yum install epel-release
3、安装redis数据库
yum install redis
4、安装完毕后,使用下面的命令启动redis服务
# 启动redis
service redis start
# 停止redis
service redis stop
# 查看redis运行状态
service redis status
# 查看redis进程
ps -ef | grep redis
5、设置redis为开机自动启动
chkconfig redis on
6、进入redis服务
# 进入本机redis
redis-cli
# 列出所有key
keys *
7、防火墙开放相应端口
# 开启6379
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
# 开启6380
/sbin/iptables -I INPUT -p tcp --dport 6380 -j ACCEPT
# 保存
/etc/rc.d/init.d/iptables save
# centos 7下执行
service iptables save
1.2修改redis默认端口和密码
1、打开配置文件
vi /etc/redis.conf
2、修改默认端口,查找 port 6379 修改为相应端口即可
3、修改默认密码,查找 requirepass foobared 将 foobared 修改为你的密码
4、使用配置文件启动 redis
redis-server /etc/redis.conf &
5、使用端口登录
redis-cli -h 127.0.0.1 -p 6179
6、此时再输入命令则会报错
7、输入刚才输入的密码
auth 111
8、停止redis
命令方式关闭redis
redis-cli -h 127.0.0.1 -p 6179
shutdown
进程号杀掉redis
ps -ef | grep redis
kill -9 XXX
1.3使用redis desktop manager远程连接redis
1、访问如下网址下载redis desktop manager
<a href="https://redisdesktop.com/download" target="_blank">https://redisdesktop.com/download
</a>
2、安装后启动,新建一个连接
** 3、填写如下信息后点击“Test Connection”测试是否连接成功**
4、如果长时间连接不上,可能有两种可能性
a)bind了127.0.01:只允许在本机连接redis
b)protected-mode设置了yes(使用redis desktop manager工具需要配置,其余不用)
解决办法:
# 打开redis配置文件
vi /etc/redis.conf
# 找到 bind 127.0.0.1 将其注释
# 找到 protected-mode yes 将其改为
protected-mode no
5、重启redis
service redis stop
service redis start
6、再次连接即可
2.
介绍
Redis 是一个使用 C 语言写成的,开源的 key-value 数据库。和Memcached类似,它支持存储的value类型相对更多, 包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持 push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各 种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的 数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
特性
速度快
支持丰富数据类型
支持事务
丰富的特性
安装
二进制安装
YUM包安装
[root@node1 ~]# yum install redis ‐y # 配置好yum源即可
[root@node1 ~]# rpm ‐ql redis /etc/redis.conf # 主配置文件
/usr/bin/redis‐benchmark # redis性能检测工具
/usr/bin/redis‐check‐aof # AOF文件修复工具
/usr/bin/redis‐check‐rdb # 文件检查工具
/usr/bin/redis‐cli # redis服务端
/usr/bin/redis‐server # redis服务端
/usr/lib/systemd/system/redis.service # 守护进程 启动redis服务
[root@node1 ~]# redis‐server /etc/redis.conf
[root@node1 ~]# redis‐cli 127.0.0.1:6379> 关闭redis服务
[root@node1 ~]# redis‐cli shutdown
配置文件
[root@node1 ~]# cat /etc/redis.conf | grep ‐Ev "^$|^#"
bind 127.0.0.1 # 绑定IP地址
protected‐mode yes
port 6379 # 监听端口
tcp‐backlog 511
timeout 0 # 设置客户端连接超时时间
tcp‐keepalive 300 # 检测客户端是否健康的周期时间
daemonize yes # 是否以守护进程方式启动
supervised no
pidfile /var/run/redis_6379.pid # PID文件
loglevel notice # 日志等级
logfile /var/log/redis/redis.log # 日志文件
databases 16 # 设置数据库的数目
# 配置触发Redis的持久化条件:
save 900 1
save 300 10
save 60 10000
stop‐writes‐on‐bgsave‐error yes # 当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据
rdbcompression yes # 对于存储到磁盘中的快照,可以设置是否进行压缩存储
rdbchecksum yes # 在存储快照后,我们还可以让redis使用CRC64算法来进行数据校验
dbfilename dump.rdb # 设置快照的文件名
dir /var/lib/redis # 设置快照文件的存放路径
slave‐serve‐stale‐data yes
slave‐read‐only yes # 配置Redis的Slave实例是否接受写操作
repl‐diskless‐sync no # 主从数据复制是否使用无硬盘复制功能
repl‐diskless‐sync‐delay 5 # 等待时间
repl‐disable‐tcp‐nodelay no # 同步之后是否禁用从站上的TCP_NODELAY
slave‐priority 100
appendonly no # 默认redis使用的是rdb方式持久化
appendfilename "appendonly.aof" # 文件名
appendfsync everysec # aof持久化策略的配置
no‐appendfsync‐on‐rewrite no # 在aof重写或者写入rdb文件的时候,不执行持久化策略
auto‐aof‐rewrite‐percentage 100 # 当目前aof文件大小超过上一次重写的aof文件大小的百分之多少进行重 写
auto‐aof‐rewrite‐min‐size 64mb # 设置允许重写的最小aof文件大小
aof‐load‐truncated yes # 当截断的aof文件被导入的时候,会自动发布一个log给客户端然后load。
lua‐time‐limit 5000 # 一个lua脚本执行的最大时间
数据类型
命令手册:http://redisdoc.com/index.html
string
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> mset k1 v11 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k1 k2 k3
1) "v11"
2) "v2"
3) "v3"
127.0.0.1:6379> setex k1 10 v10
OK
127.0.0.1:6379> ttl k1
(integer) 7
127.0.0.1:6379> get k1
"v10"
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379> setnx k2 v20
(integer) 0
127.0.0.1:6379> set k1 10
OK
127.0.0.1:6379> incr k1
(integer) 11
127.0.0.1:6379> get k1
"11"
127.0.0.1:6379> decr k1
(integer) 10
127.0.0.1:6379> incrby k1 10
(integer) 20
127.0.0.1:6379> decrby k1 15
(integer) 5
hash
127.0.0.1:6379> hset a k1 v1 (integer) 1 127.0.0.1:6379> hget a k1 "v1" 127.0.0.1:6379> hdel a k1 (integer) 1 127.0.0.1:6379> hset b k2 v2 (integer) 1 127.0.0.1:6379> hexists a k2 (integer) 0 127.0.0.1:6379> hgetall b 1) "k2" 2) "v2" 127.0.0.1:6379> hkeys b 1) "k2" 127.0.0.1:6379> hlen b (integer) 1
list
127.0.0.1:6379> lpush list1 v1 v2 v3 v4 (integer) 4 127.0.0.1:6379> lpushx list1 v5 (integer) 5 127.0.0.1:6379> lpop list1 "v5" 127.0.0.1:6379> lrange list1 0 ‐1 1) "v4" 2) "v3" 3) "v2" 4) "v1" 127.0.0.1:6379> lset list1 3 v11 OK 127.0.0.1:6379> lrange list1 0 ‐1 1) "v4" 2) "v3" 3) "v2" 4) "v11" 127.0.0.1:6379> lindex list1 0 "v4"
127.0.0.1:6379> rpop list1 "v11" 127.0.0.1:6379> lrange list1 0 ‐1 1) "v4" 2) "v3" 3) "v2" 127.0.0.1:6379> rpush list1 v33 v44 (integer) 5 127.0.0.1:6379> lrange list1 0 ‐1 1) "v4" 2) "v3" 3) "v2" 4) "v33" 5) "v44"
set
127.0.0.1:6379> sadd set1 1 2 3 4 (integer) 4 127.0.0.1:6379> sadd set2 3 4 5 6 (integer) 4 127.0.0.1:6379> scard set1 (integer) 4 127.0.0.1:6379> sdiff set1 se2 1) "1" 2) "2" 3) "3" 4) "4" 127.0.0.1:6379> sdiff set1 set2 1) "1" 2) "2" 127.0.0.1:6379> sinter set1 set2 1) "3" 2) "4" 127.0.0.1:6379> sunion set1 set2 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6" 127.0.0.1:6379> SMEMBERS set1 1) "1" 2) "2" 3) "3" 4) "4" 127.0.0.1:6379> SPOP set1 "4" 127.0.0.1:6379> SMEMBERS set1 1) "1" 2) "2" 3) "3" 127.0.0.1:6379> SREM set1 2 (integer) 1
zset
![](leanote://file/getImage?fileId=5ca31d3dddcd0f2f24000007)
127.0.0.1:6379> zadd zset1 0 a 1 b 2 c 3 d (integer) 4 127.0.0.1:6379> zcard zset1 (integer) 4 127.0.0.1:6379> ZCOUNT zset1 1 3 (integer) 3 127.0.0.1:6379> ZRANGE zset1 0 ‐1 1) "a" 2) "b" 3) "c" 4) "d" 127.0.0.1:6379> ZRANK zset1 d (integer) 3
其他命令
RBD持久化
简介
RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据 库中所有键值对数据)。恢复时是将快照文件直接读到内存里。
优点: RDB是一个非常紧凑(compact)的文件,它保存了redis 在某个时间点上的数据集。这种文件非常适合用于进 行备份和灾难恢复。 生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操 作。 RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
缺点: RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运行都要执行fork操作创建子进程,属于 重量级操作(内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑),频繁执行成本过高(影响性能) RDB文件使用特定二进制格式保存,Redis版本演进过程中有多个格式的RDB版本,存在老版本Redis服务无 法兼容新版RDB格式的问题(版本不兼容) 在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有 丢失)
触发方式
自动触发: 主配置文件中save字段
手动触发: bgsave
恢复数据
将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可,redis就会自动加载文件数据至内存了。Redis 服 务器在载入 RDB 文件期间,会一直处于阻塞状态,直到载入工作完成为止
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/var/lib/redis
停止RDB持久化
有些情况下,我们只想利用Redis的缓存功能,并不像使用 Redis 的持久化功能,那么这时候我们最好停掉 RDB 持 久化。可以通过上面讲的在配置文件 redis.conf 中,可以注释掉所有的 save 行来停用保存功能或者直接一个空字 符串来实现停用:save “”
AOF持久化
简介
Redis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库的状态。而另一种持久化方式 AOF 则是通 过保存Redis服务器所执行的写命令来记录数据库状态。
优点:
AOF 持久化的方法提供了多种的同步频率,即使使用默认的同步频率每秒同步一次,Redis 最多也就丢失 1
秒的数据而已。
AOF 文件使用 Redis 命令追加的形式来构造,因此,即使 Redis 只能向 AOF 文件写入命令的片断,使用
redis-check-aof 工具也很容易修正 AOF 文件。
AOF 文件的格式可读性较强,这也为使用者提供了更灵活的处理方式。例如,如果我们不小心错用了FLUSHALL 命令,在重写还没进行时,我们可以手工将最后的 FLUSHALL 命令去掉,然后再使用 AOF 来恢复数据。
缺点:
对于具有相同数据的的 Redis,AOF 文件通常会比 RDF 文件体积更大。
虽然 AOF 提供了多种同步的频率,默认情况下,每秒同步一次的频率也具有较高的性能。但在 Redis 的负载
较高时,RDB 比 AOF 具好更好的性能保证。
RDB 使用快照的形式来持久化整个 Redis 数据,而 AOF 只是将每次执行的命令追加到 AOF 文件中,因此从
理论上说,RDB 比 AOF 方式更健壮。官方文档也指出,AOF 的确也存在一些 BUG,这些 BUG 在 RDB 没有
存在。
开启AOF
将 redis.conf 的 appendonly 配置改为 yes 即可。
手动备份: bgrewriteaof
AOF恢复
重启 Redis 之后就会进行 AOF 文件的载入。异常修复命令:redis-check-aof –fix 进行修复