redis数据库管理

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”测试是否连接成功**
image.png
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

image.png
image.png

停止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 进行修复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值