Redis的其他特性

1、消息订阅与发布

subscribe my1 订阅频道

psubscribe my1* 批量订阅频道,订阅以my1开头的所有频道

publish my1 hello 在指定频道中发布消息,返回值为接受到信息的用户数

类似于桌面右下角的小广告

->所以这里的频道没有创建这一说

2、多数据库

redis默认有16个数据库,0, 1, 2....15

默认所有的数据操作,都是在0号数据库上操作的

切换数据库:select 数据库名

扫描二维码关注公众号,回复: 5174646 查看本文章

把某个键值对进行数据库移植:move key 数据库名,在当前数据库该键值对就不存在了

清空当前数据库:flushdb

清空服务器-所有数据库:flushall

3、事务

mysql事务:目的是为了保证数据完整性,安全

redis事务:目的是为了进行redis语句的批量化执行

multi 开启事务

exec 提交事务

discard 事务回滚

->当事务中某几个语句出错,程序不会自动进行事务回滚,其他语句正常执行

4、基础命令

ping 如果返回PONG,代表连接成功,否则会返回no connected

quit 退出客户端,和ctrl+c一致

dbsize 返回当前数据库中的key数量

info 可以看到服务器和连接客户端的详细详细

5、持久化

持久化:把数据保存在硬盘上

关系型数据库 mysql,任何增删改语句,都是在硬盘上做的操作

内存(兔子):高效,断电数据就会消失

硬盘(乌龟):读写速度慢于内存,断电数据依旧存在

非关系型数据库redis:

默认情况下,所有的增删改,数据都是在内存中进行操作

断电以后,redis的部分数据会丢失,丢失的数据就是保存在内存中的数据

6、redis的两种持久化策略,RDB

这是默认的策略,照快照,保存的是一种状态

20G数据 ---> 几kb快照

优点:

1)快照保存数据速度极快,还原也快

2)适用与灾难备份,例如redis服务器所在机房失火,我要赶紧儿将redis数据备份

缺点:

1)小内存机器不适合使用

RDB机制符合要求就会照快照。(随时随地启动),会占用一部分系统资源,

例如我有1G的数据,他会先将1G的数据先复制过来(此时内存就被占用2G了),进行压缩、备份、运算-->转化成dump.rdb文件

这个动作是突然的

Linux 4G

3G数据,这时进行rdb机制,很有可能因为内存不足直接宕机(宕机后,服务器会关闭,属于非正常关闭)

使用场景:内存比较充裕的计算机

->在安装目录下默认有dump.rdb

RDB何时进行照快照:

服务器正常关闭时,照快照;redis-cli shutdown

key满足一定条件时,照快照;

save 900 1

save 300 10

save 60 10000

每15分钟至少有1个key发生变化,则照快照保存

7、redis的两种持久化策略,AOF

这是使用日志功能保存数据操作

1)同步规则:

每秒同步:安全性低,比较节省系统资源->怎么个理解法

每修改同步:只要有key变化语句,就进行AOF保存数据,比较安全,但是极为浪费效率

不同步(默认):不安全

2)AOF操作:只会保存导致key发生变化的语句

3)AOF配置:

   3.1)将appendonly no 改成 appendonly yes,这一步时开启AOF机制;

   3.2)策略的选择:将appendfsync always的注释去掉,每次key变化就进行保存

优点:

持续性占用极少量的内存空间,只有--KB,会专门开辟一个AOF日志程序;性价比很高哟

缺点:

1)日志文件会特别大,不适用于灾难备份;最终数据不多,但是过程语句复杂;

例子:1G数据,由10G的语句生成

2)恢复效率远远低于RDB

适用场景:内存比较小的计算机,所以大公司会选择用默认RDB的方式

猜你喜欢

转载自www.cnblogs.com/syjp/p/10389433.html