Redis简介

Redis是什么?

 redis是一个key-value数据库。

 储存的类型有:string,哈希结构,集合,有序集合。

 

是数据库就必须提一下他的事务,

它的事务会经历三个阶段:

1.开始事务。(multi

2.命令入队

3.执行事务(exec

 

1)Discard是取消事务,已经执行完毕的事务是无法撤销的。

 

2)在执行事务的时候如果遇到错误的命令redis不会回滚,它只会告诉你这个命令是错误的。不影响当前事务队列里其他命令的执行。 而关系型数据库,则会回滚到最初的状态。

 

3)在执行事务的时候,命令本身没有问题,只是操作对象有问题,不会直接报错,而是把该命令放到事务队列当中。

事务结束后,其他命令执行成功,此命令报错,说类型不一致,

此问题的解决,需要交给程序员。

 

Redis的数据储存在缓存当中,所以需要持久化。

Redis的持久化有2种方式,

第一种是rdb,又称快照。简单来说就是通过配置文件,来指定每隔几分钟或者N次写操作之后,从内存中dump数据形成rdb文件,压缩放在备份目录下。

4(例如:假设redis2次快照之间间隔20分钟,在快照的过程中,不断有命令操作,当快照完毕,快照过程中的命令操作没有持久化的时候,宕机。这些命令操作的数据就会丢失)

 

第二种方式是aof Redis2.4版本之后推出的,

Aof是通过日志的方式,来持久化。

主进程执行命令,后台日志进程会把命令写进aof文件中。

这就产生了问题:1.每个命令重写依次aof2.key操作100次,产生100行记录,aof文件会很大?

通过配置文件,可以指定aof持久化。

Aof重写可以解决,问题2.就是aof会把aof文件逆化成命令,写入aof日志里。

(例如:incr age 此命令执行了100次,从1变成101,aof日志只会记录age 101

如果aofrdb都存在,优先使用aof来恢复数据。

因为aof丢失的数据更少。

 

Redismemcached的区别。

redismemcached相比,的独特之处:

1: redis可以用来做存储(storge), memccached是用来做缓存(cache)

  这个特点主要因为其有”持久化”的功能.

2: 存储的数据有”结构”,对于memcached来说,存储的数据,只有1种类型--”字符串”,

  redis则可以存储字符串,链表,哈希结构,集合,有序集合.

: dump rdb过程中,aof如果停止同步,会不会丢失?

: 不会,所有的操作缓存在内存的队列里, dump完成后,统一操作.

 

: aof重写是指什么?

: aof重写是指把内存中的数据,逆化成命令,写入到.aof日志里.

以解决 aof日志过大的问题.

 

: 如果rdb文件,aof文件都存在,优先用谁来恢复数据?

: aof(因为aof恢复的丢失的数据更少)

 

: 2种是否可以同时用?

: 可以,而且推荐这么做

 

: 恢复时rdbaof哪个恢复的快

: rdb,因为其是数据的内存映射,直接载入到内存,aof是命令,需要逐条执行

 

Redis集群宕机,有哨兵机制

Master---salve2

|

Salve1

Master宕机了,手动操作,运行过程中动态的改变集群,slave1位主,slave为salve1的从,,

config 运维命令,

运行时更改master-slave

1.命令该服务不做其他redis服务的slave

命令:slaveof no one

 

Sentinel监控主从服务器,

 

Redis给key设置过期时间。涉及到的过期key处理的问题。

1.定时删除(每个设置时间的key都得维护一个定时器之类的)

我定个时间,到点就删除,有什么好处呢,对内存是最友好的,可以保证过期键会被尽快的删除掉,内存被尽早的释放出来但是对cpu是不友好的,因为过期key很多,到点儿删除,cpu不干别的事儿,光做删除过期的健的操作了,

2.懒惰删除

     客户端现在取这个数据了,这个key已经过期了就把该key给删除掉

3.定期删除

定期?比定时时间长一点,不会时刻的去检查过期键,删除过期键,定期删除,是每隔一段时间检查一次数据库,删除里面的过期键,很明显定期删除是定时删除和懒惰删除的一个折中。

 

Redis时间上采用了惰性删除和定期删除两种策略配合使用,可以更好的使CUP时间和内存区的平衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java小技巧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值