![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis
文章平均质量分 91
duration~
努力学习吧~
展开
-
通用分布式锁组件
Redisson是一个基于Redis的工具包,功能非常强大。将JDK中很多常见的队列、锁、对象都基于Redis实现了对应的分布式版本。1)创建锁对象2)尝试获取锁3)处理业务4)释放锁但是,除了第3步以外,其它都是非业务代码,对业务的侵入较多:可以发现,非业务代码格式固定,每次获取锁总是在重复编码。我们可不可以对这部分代码进行抽取和简化呢?锁名称锁等待时间锁超时时间时间单位方法结束是否释放锁/*** 加锁key的表达式,支持SPEL表达式/**原创 2024-04-04 13:30:01 · 1001 阅读 · 0 评论 -
Redis网络模型
try {// 1.建立连接// 2.获取输出流、输入流// 3.发出请求// 3.1.获取授权 auth 123456// 4.解析响应// 4.解析响应// 4.解析响应// 5.释放连接try {if (reader!if (writer!if (s!// 读取首字节// 判断数据类型标示case '+': // 单行字符串,直接读一行case '-': // 异常,也读一行case ':': // 数字。原创 2024-04-02 08:02:22 · 1096 阅读 · 0 评论 -
Redis数据结构
对⼀个内部表示成long型的string执行append, setbit, getrange这些命令,针对的仍然是string的值(即⼗进制表示的字符串),而不是针对内部表⽰的long型进⾏操作。String的内部存储结构⼀般是sds(Simple Dynamic String,可以动态扩展内存),但是如果⼀个String类型的value的值是数字,那么Redis内部会把它转成long类型来存储,从⽽减少内存的使用。我们可以看到,key的类型固定是string,而value可能的类型是多个。原创 2024-03-31 22:18:17 · 955 阅读 · 0 评论 -
Redis序列化操作
拥用这些 API 的支持,就可以将 Java 对象序列化为二进制,当应用需要获取 Java 对象时,使用 public byte[] get(byte[] key) 函数将字节数组取出,然后反序列化为 Java 对象即可。序列化的工具有很多,例如 XML、Json、谷歌的 Protobuf 、Facebook 的 Thrift 等等,对于序列化工具的选择开发者可以根据自身的需求决定,下面以 protostuff (Protobuf 的 Java 客户端)为例子进行说明。原创 2023-11-27 08:00:00 · 996 阅读 · 0 评论 -
Lua脚本语言
Lua 是一种轻量级脚本语言,该语言采取了类似于 C 语言的语法,同时加入了很多其他语言特性,比如提供了面向对象编程的语法支持和闭包等高级特性。Lua 是一种解释性语言,但也可以通过编译生成字节码文件,然后在虚拟机中运行。Lua 虚拟机是一个非常轻量级的运行环境,它可以非常容易地嵌入到其他程序中。Lua 的主要特性包括:1. 语法简单:采取了类似 C 的语法,易于学习和使用。2. 面向对象编程:支持面向对象编程的语法。原创 2023-11-16 08:00:00 · 166 阅读 · 0 评论 -
Redis使用
RedisTemplate可以接收任意Object作为值写入Redis:只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果是这样的:缺点:可读性差内存占用较大@Bean// 创建RedisTemplate对象// 设置连接工厂// 创建JSON序列化工具// 设置Key的序列化// 设置Value的序列化// 返回这里采用了JSON序列化来代替默认的JDK序列化方式。原创 2023-09-22 10:59:12 · 470 阅读 · 2 评论