程序猿洞晓
Redis学习笔记(七):Redis中Lua语言应用和原子性控制 Redis学习笔记(七):Redis中Lua语言应用和原子性控制
Lua脚本在Redis里面使用的范围还是很广的,如从数据库中批量将数据导入到Redis中、分布式锁防止锁误删、多操作原子性要求等,这些都会用到Lua脚本。但是这里还是需要注意的是Lua只能保证原子性,不能保证事务性。另外根据对Redis的了解,其本身是提供事务机制的,但是这个事务机制在很多情况是不能回滚的(鸡肋),所以用起来也更少。这里不说具体的事务性,而是来一起看看Lua脚本实现原子操作。
2019-08-30
Redis学习笔记(六):Redis之消息发布、订阅机制 Redis学习笔记(六):Redis之消息发布、订阅机制
消息的发布和订阅,第一想到的是Kafka、RabbitMQ、ActiveMQ等,但是实际上Redis也是有这个功能,这个功能在Redis中实现很简单,也比较粗暴。没有存储,没有各种订阅模式。只要订阅同一个渠道的订阅者就都可以收到发布到该渠道的信息。如果没有订阅者,消息也不会缓存起来,而是直接丢弃。在简单的功能、能够接受这种模式并且有补偿机制的业务中是可以考虑使用的。下面看一下这个到底是怎么玩的。
2019-08-20
Redis学习笔记(五):redis使用的RESP报文格式和手写Redis简易客户端 Redis学习笔记(五):redis使用的RESP报文格式和手写Redis简易客户端
Redis客户端和服务端交互是通过tcp协议,在通讯的报文格式使用的是RESP协议规范,也就是意味只要和Redis服务端建立Scoket连接,通过RESP报文格式传输数据就可以实现Redis客户端和服务端的交互。看起来是很简单的,但是实际上的确是这么简单,RESP报文格式的可读性也是很高的。
2019-08-16
Redis学习笔记(四):缓存雪崩、缓存击穿、缓存穿透形成的原因和解决方案 Redis学习笔记(四):缓存雪崩、缓存击穿、缓存穿透形成的原因和解决方案
想要了解缓存雪崩、缓存击穿、缓存穿透形成的原因,首先需要了解缓存在项目中是如何运用的。所以本篇文章的开篇就说一下缓存的使用。然后才能循序渐进的来介绍每种问题的出现和处理方案。
2019-08-05
Redis学习笔记(三):Redis应用之投票、红包 Redis学习笔记(三):Redis应用之投票、红包
Redis基本数据类型及基本命令的使用都已经做完笔记了,接下来就需要将这些笔记实际运用到项目中啦。经常在项目中用到的就是缓存常量数据,还有一些基本的计数等操作,比如我的博客里面访问量、文章阅读量都是缓存在Redis中的,累加阅读量、访问量都是在Redis中完成,夜间定时刷入数据库的,这样就不用每次访问都去数据库中查询。基本应用没有问题,那来点稍微复杂的呢,这篇文章就让我们一起来看看其他的应用场景,将从文章投票排行榜、红包出发来依次说说具体使用何种数据结构合适。
2019-07-31
Redis学习笔记(二):Redis常用数据类型之set(集合)、zset(有序集合)的命令以及全局命令详解 Redis学习笔记(二):Redis常用数据类型之set(集合)、zset(有序集合)的命令以及全局命令详解
上一篇博客说了str、hash和list三种数据类型,这篇博客将会介绍五种数据类型的后两种set和zset,分别是集合和有序集合。这两个数据类型就我个人的开发经验来说没用过,一方面是不熟悉,一方面是前面的三种类型基本已经满足了日常开发需求。在文章的最后还会补充说明一些全局的命令,至此关于命令的内容就结束啦。写的有点麻烦,但是写完后有种发现新大陆的感觉,后期在使用redis的时候,选择性知识体系将会更宽,不会仅限于一两种数据类型啦。
2019-07-18
Redis学习笔记(一):Redis常用数据类型之str(字符串)、hash(哈希)和list(列表)的命令 Redis学习笔记(一):Redis常用数据类型之str(字符串)、hash(哈希)和list(列表)的命令
redis是日常开发中最常的非关系型数据库,可以说只要是个项目基本都会使用到。常用来做数据缓存、分布式锁等等。……。这篇文章里面就是用来记录和说明这前三种数据类型常使用的命令。虽然在实际开发过程中很少使用这些命令,但是了解这些命令,会更有利于对redis相关API的理解和使用。
2019-07-13
Redis实现分布式锁 Redis实现分布式锁
高可用,高并发,安全性……随着互联网不断的发展,这些要求越来越高,不论是在面试还是在日常的工作中。作为程序员必须要做到与时俱进,学习和了解这些知识。平时在通勤路上都会去看看一些大神的博客和公众号,学习他们的经验,也会在项目中借鉴。刚好这次项目上用到同步锁,对比数据库的乐观锁、悲观锁、显示锁Lock以及synchronized等,最终……
2018-07-06