Redis配置与优化

关系型数据库

  • 一个结构化的数据库,创建在关系模型基础上
  • 一般面向与记录

非关系型数据库

  • 一般主流的关系型数据库之外的数据库都是非关系型数据库

Redis基于内存运行并支持持久化

采用key-value(键值对)的存储形式

优点

  • 具有极高的数据读写速度
  • 支持丰富的数据类型
  • 支持诗句的持久化
  • 原子性
  • 支持数据备份

部署redis

#redis的安装包可以在下面地址下载
https://redis.io/downloads/

#上传安装包redis-4.0.9.tar.gz
yum -y install gcc gcc-c++
tar zxf redis-4.0.9.tar.gz
cd redis-4.0.9
make && make PREFIX=/usr/local/redis install
#安装到/usr/local/redis

ln -s /usr/local/redis/bin/* /usr/local/bin/
cd utils/
./install_server.sh
ss -anpt |grep 6379
#初始化redis

/etc/init.d/redis_6379 status
/etc/init.d/redis_6379 start
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 restart 
#redis管理命令

redis测试

redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000
#测试redis性能-h测试的主机IP,-p测试的端口,-c测试的并发量,-n测试的数量

redis客户端

redis-cli

#设置键值对
127.0.0.1:6379> set name zhangsan
OK

#获取值
127.0.0.1:6379> get name
"zhangsan"

#查看所有数据
keys *

#匹配键
keys na*
1) "name"

#匹配?
127.0.0.1:6379> keys na??
1) "name"
127.0.0.1:6379> keys na???
(empty list or set)

#判断键是否存在
127.0.0.1:6379> EXISTS name
(integer) 1
127.0.0.1:6379> EXISTS lll
(integer) 0

#删除键值对
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)

#EX设置过期时间,这里为10秒
127.0.0.1:6379> set name lisi EX 10
OK
127.0.0.1:6379> get name 
"lisi"
127.0.0.1:6379> get name 
(nil)

#在已经存在的键值对上设置过期时间
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> EXPIRE name 5
(integer) 1
127.0.0.1:6379> get name
"lisi"
127.0.0.1:6379> get name
(nil)

#统计有多少数据
127.0.0.1:6379> dbsize
(integer) 4

#初始化过后会有16个数据库0-15
127.0.0.1:6379> select 15
OK
127.0.0.1:6379[15]> 

#移动键值对到其他库
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> move name 10
(integer) 1
127.0.0.1:6379> SELECT 10
OK
127.0.0.1:6379[10]> get name
"lisi"

#清空当前数据库的所有数据
127.0.0.1:6379[10]> flushdb 
OK
127.0.0.1:6379[10]> get name
(nil)

#清空所有数据库的所有数据
127.0.0.1:6379[10]> FLUSHALL
OK

redis持久化

redis是运行在内存中,内存中的数据断电丢失

未来能够重用redis数据,或着防止系统故障,需要将redis中的数据写入到磁盘空间中,即持久化

持久化分类

  • RDB方式:创建快照的方式获取某一时刻的Redis中所有数据的副本
    • redis的默认持久化方式
    • 默认文件名为dump.rdb
    • 触发方式
      • 手动触发
        • SAVE 命令,会阻塞Redis服务,直到RDB文件创建完成
        • BGSAVE 命令,通过fork操作创建一个子进程来负责持久化工作,而父进程(即主进程)则继续处理客户端的请求,不会造成服务阻塞。
      • 自动触发
        • Redis可以通过配置自动执行BGSAVE命令来定期进行数据持久化。配置文件中的save指令可以设置多个条件
        • 当Redis接收到shutdown命令准备关闭时,如果没有开启AOF持久化,它也会自动执行一次BGSAVE,确保数据能够被保存。
    • 优缺点
      • 适合大规模的数据恢复
      • 如果业务对数据完整性和一致性要求不高,RDB是更好的选择
      • 数据的完整性和一致性不高
      • 备份时占用内存
  • AOF方式:将执行的写命令写到文件的末尾,以日志的方式来记录数据的变化
    • redis默认不开启
    • 弥补RDB的不足
    • 采用日志的形式来记录每个写操作,并追加到文件中
    • redis重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

 RDB方式

#手动输入
127.0.0.1:6379>set name lisi
127.0.0.1:6379>get name
"lisi"

127.0.0.1:6379> save
OK

#关闭数据库把RDB的存储数据移走
/etc/init.d/redis_6379 stop
cd /var/lib/redis/6379/
mkdir /bak
mv dump.rdb /bak
/etc/init.d/redis_6379 start 
127.0.0.1:6379> get name
(nil)
#备份文件移走后数据也会被移走
/etc/init.d/redis_6379 stop

mv /bak/dump.rdb ./
/etc/init.d/redis_6379 start 
127.0.0.1:6379>get name
"lisi"

AOF方式

#默认不开启修改配置文件开启AOF
vim /etc/redis/6379.conf
--------673行---------
no改为yes

127.0.0.1:6379>set name lisi
127.0.0.1:6379>get name
"lisi"

/etc/init.d/redis_6379 stop
cd /var/lib/redis/6379/
mv appendonly.aof /bak
/etc/init.d/redis_6379 start 
127.0.0.1:6379> get name
(nil)

/etc/init.d/redis_6379 stop
mv  /bak appendonly.aof
/etc/init.d/redis_6379 start
 127.0.0.1:6379>get name
"lisi"

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值