Redis

redis基础教程:
http://www.runoob.com/redis/redis-tutorial.html
数据结构:
String key value
Hash key filed value 适合用于存储对象。
List key value 支持阻塞操作,可用于异步队列
Set key member 无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Sorted Set key score menber 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。

https://blog.csdn.net/u011692780/article/details/81213010
关于redis的事务,在事务提交之前,其内部的所有命令将不会被执行。对于一个存在问题的命令,如果在入队的时候就已经出错,整个事务内的命令将都不会被执行(其后续的命令依然可以入队),如果这个错误命令在入队的时候并没有报错,而是在执行的时候出错了,那么redis默认跳过这个命令执行后续命令。也就是说,redis只实现了部分事务。

redis的锁CAS(check and set)类似于乐观锁,redis的实现原理是使用watch进行监视一个(或多个)数据,如果在事务提交之前数据发生了变化(估计使用了类似于乐观锁的标记),那么整个事务将提交失败

redis事务为什么没有原子性:
Redis 操作失败的原因只可能是语法错误或者错误的数据库类型操作,这些都是在开发层面能发现的问题不会进入到生产环境,因此不需要回滚。
Redis 内部设计推崇简单和高性能,因此不需要回滚能力。
其次,注意到redis是单线程的,所以也不难理解redis为什么没有隔离级别的概念,也能很容易理解redis三大特性。

关于redis与mysql数据的一致性:
还是得根据业务的具体类型来,为减少mysql的压力,一般先去读redis,未命中再去读mysql,对于实时性不强的业务,比如点赞数,文章阅读数确实可以这样。但是对于实时性强的业务,比如货币余额,应该读mysql。写操作的话,如果写入请求较多,则直接写入Redis中去,然后间隔一段时间,批量将所有的写入请求,刷新到MySQL中去;如果写入请求不多,则可以在每次写入Redis,都立刻将该命令同步至MySQL中去。

redis与mysql实现点赞功能实例讲解:
https://www.jb51.net/article/113210.htm

redis持久化:
https://www.cnblogs.com/chenliangcl/p/7240350.html

redis面试问题
https://www.nowcoder.com/discuss/92610?type=2&order=0&pos=45&page=1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值