redis 学习笔记(2)-client端示例代码

京东面试:Redis主从切换,锁失效了,怎么办? Redis 分布式锁 主从切换问题的,有两个层面的解决方案:按照两个层面进行 深度回答,可以充分展示一下大家雄厚的 “技术肌肉”,让面试官爱到 “不能自已、口水直流”,然后实现”offer直提”。在面试之前,建议大家系统化的刷一波 5000页《尼恩Java面试宝典PDF》,里边有大量的大厂真题、面试难题、架构难题。很多小伙伴刷完后, 吊打面试官, 大厂横着走。在刷题过程中,如果有啥问题,大家可以来 找 40岁老架构师尼恩交流。另外,如果没有面试机会,可以找尼恩来改简历、做帮扶。前段时间, 阅读详情


redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson

一、Jedis的使用

复制代码
1         <dependency>
2             <groupId>redis.clients</groupId>
3             <artifactId>jedis</artifactId>
4             <version>2.6.0</version>
5             <type>jar</type>
6             <scope>compile</scope>
7         </dependency>
复制代码

pom.xml中添加上面的依赖项就行了,下面是示例代码:

复制代码
 1     @Test
 2     public void testJedis() throws InterruptedException {
 3 
 4         Jedis jedis = new Jedis("10.6.144.xxx", 7030);
 5 
 6         // String测试
 7         System.out.println(jedis.get("foo")); // 首次获取,redis中还没有,返回null
 8 
 9         jedis.set("foo", "bar", "NX", "EX", 1);// 添加缓存项foo,过期时间为1s,只有该项原来不存在时,才添加
10 
11         System.out.println(jedis.get("foo"));// bar
12 
13         Thread.sleep(1000);// 暂停1s
14 
15         System.out.println(jedis.get("foo"));// 已过期,返回null
16 
17         jedis.close();
18     }
复制代码

输出:

null
bar
null

Jedis的特点:可以使用String这种简单类型,可以设置缓存过期时间,但对于集合的使用不太方便。

另外有一个十分有用的命令: keys

比如./redis-cli keys \* 将返回所有的缓存keys,可用于遍历所有缓存项,Jedis支持keys命令:

        Set<String> keys= jedis.keys("*");
        for (String k : keys) {
            System.out.println(k);
        }

 

二、Redisson的使用

1         <dependency>
2             <groupId>org.redisson</groupId>
3             <artifactId>redisson</artifactId>
4             <version>1.1.5</version>
5         </dependency>

同样先添加依赖项,然后参考下面的示例代码:

复制代码
 1     @Test
 2     public void testRedisson() {
 3         Config config = new Config();
 4         config.useSingleServer().setAddress("10.6.144.***:7030");
 5 
 6         Redisson redisson = Redisson.create(config);
 7 
 8         // Set测试
 9         RSet<String> mySet = redisson.getSet("mySet");
10         if (mySet != null) {
11             mySet.clear();
12         }
13         mySet.add("1");
14         mySet.add("2");
15         mySet.add("3");
16 
17         RSet<String> mySetCache = redisson.getSet("mySet");
18 
19         for (String s : mySetCache) {
20             System.out.println(s);
21         }
22 
23         System.out.println("--------------------");
24 
25         // List测试
26         RList<SampleBean> myList = redisson.getList("myList");
27         if (myList != null) {
28             myList.clear();
29         }    
30         
31         myList.add(new SampleBean("A"));
32         myList.add(new SampleBean("B"));
33         myList.add(new SampleBean("C"));
34 
35         RList<SampleBean> myListCache = redisson.getList("myList");
36 
37         for (SampleBean bean : myListCache) {
38             System.out.println(bean);
39         }
40         
41         System.out.println("--------------------");
42         
43         //Queue测试
44         RQueue<String> myQueue = redisson.getQueue("myQueue");
45         if (myQueue != null) {
46             myQueue.clear();
47         }
48         myQueue.add("X");
49         myQueue.add("Y");
50         myQueue.add("Z");
51         
52         RQueue<String> myQueueCache = redisson.getQueue("myQueue");
53 
54         for (String s : myQueueCache) {
55             System.out.println(s);
56         }
57         
58         System.out.println("--------------------");
59         
60         System.out.println(myQueue.size());//3
61         System.out.println(myQueue.poll());//X
62         System.out.println(myQueue.size());//2
63         
64         System.out.println("--------------------");
65         
66         //注:虽然是从myQueue中poll的,但是由于myQueueCache与myQueue实际上是同一个缓存对象,所以下面的循环,也只剩2项
67         for (String s : myQueueCache) {
68             System.out.println(s);
69         }        
70         System.out.println("--------------------");
71         
72         //Deque测试
73         RDeque<String> myDeque = redisson.getDeque("myDeque");
74         if (myDeque != null) {
75             myDeque.clear();
76         }
77         myDeque.add("A");
78         myDeque.add("B");
79         myDeque.add("C");
80         
81         RDeque<String> myDequeCache = redisson.getDeque("myDeque");
82 
83         Iterator<String> descendingIterator = myDequeCache.descendingIterator();
84         
85         //倒序输出
86         while (descendingIterator.hasNext()) {
87             System.out.println(descendingIterator.next());
88             
89         }
90         
91         redisson.shutdown();
92     }
93 
94 }
复制代码

注:List中可直接放POJO对象,上面的示例中放了3个SampleBean实例,SampleBean定义如下:

复制代码
 1 package com.cnblogs.yjmyzz;
 2 
 3 import java.io.Serializable;
 4 
 5 public class SampleBean implements Serializable {
 6 
 7     
 8     private static final long serialVersionUID = -303232410998377570L;
 9 
10     private String name;
11 
12     public SampleBean() {
13     }
14 
15     public SampleBean(String name) {
16         this.name = name;
17     }
18 
19     public String getName() {
20         return name;
21     }
22 
23     public void setName(String name) {
24         this.name = name;
25     }
26 
27     public String toString() {
28         return name;
29     }
30 
31 }
复制代码

输出:

3
1
2
--------------------
A
B
C
--------------------
X
Y
Z
--------------------
3
X
2
--------------------
Y
Z
--------------------
C
B
A

Redisson的优势:对集合支持比较完善,但是不支持String这类简单类型,不支持keys操作

实际使用中,上述二种client建议结合使用。

Go-Redis中client接口 golang redis 阅读详情

相关推荐

redis.clients.jedis_REDIS_API

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。

Redis篇-第11章 SpringBoot集成Redis

java 连接 Mysql:JDBC 等java 连接 Redis:Jedis、Lettuce、RedisTemplate 等RedisTemplate可以接收任意Object作为值写入Redis,只不过写入前会把Object序列化为字节形式,默认是采用JDK序列化,得到的结果是这样的:缺点:可读性差 、占用内存大@Bean// 创建RedisTemplate对象// 设置连接工厂// 创建JSON序列化工具// 设置Key的序列化// 设置Value的序列化。

正版踏雪无痕的博客 1440

VMFS数据存储(datastore)丢失后恢复步骤

vmfs datastore恢复步骤

jetliu05的博客 3269

Redis-基础篇

Redis是一个开源、高性能、内存键值存储数据库,由 Salvatore Sanfilippo(网名antirez)创建,并在BSD许可下发布。它不仅可以用作缓存系统来加速数据访问,还可以作为持久化的主数据存储系统或消息中间件使用。Redis因其数据结构丰富、性能优异和高可用性而被广泛应用在现代分布式架构中。

nuist_NJUPT的博客 1758

零基础搭建本地AI绘画环境:Stable Diffusion 3.5保姆级安装教程(含中文优化方案)

本文提供零基础搭建本地AI绘画环境的详细教程,重点介绍Stable Diffusion 3.5的安装与中文优化方案。从硬件配置检查到软件依赖安装,再到核心组件配置与中文语义增强,教程涵盖全流程操作指南,帮助用户快速掌握AI文生图模型的本地部署技巧,提升创作效率。

weixin_30752699的博客 313

Mellanox CX7网卡搭配400G光模块实战:从选型到部署的完整指南

本文详细解析了Mellanox CX7网卡与400G光模块的选型策略与部署实践,涵盖硬件对比、兼容性验证及性能调优。重点介绍了OSFP光模块的选择要点和常见问题排查方法,帮助用户构建高性能网络基础设施,适用于AI训练、金融交易等场景。

efc1234567的博客 1293

Redis入门到精通(九),Jedis操作Redis

Redis入门到精通 专栏会分几期介绍Redis的概念操作,以及生产过程中频繁出现的一些问题及解决方案,在几期内逐渐深入带你全面了解Reids 本文为该专栏第九期,主要介绍Redis的几种主流框架之Jedis......

weixin_62319133的博客 3668

DDM-MIMO-FMCW雷达速度模糊与解模糊MATLAB仿真

本文深入解析了DDM-MIMO-FMCW雷达中的速度模糊现象及其解模糊方法,通过MATLAB仿真详细展示了相位编码解调、速度扩展算法和混合波形设计三大解决方案。文章还提供了参数配置、信号建模和结果可视化的实用技巧,并分享了工程实践中的避坑指南,帮助开发者高效解决雷达信号处理中的速度模糊问题。

weixin_31528001的博客 350

Redis客户端(超级详细)

RedisTemplate的两种序列化实践方案,两种方案各有各的优缺点,可以根据实际情况选择使用stringredistemplate 可以在操作大量的数据的时候推荐使用reidstemplate操作数据量不是很多使用提高我们的开发速度。

m0_59166421的博客 1万+

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

【系统分析师】2025年下半年真题:论文及解题思路

摘要 本文探讨软件测试技术的应用,重点关注静态测试与动态测试的比较。静态测试在不运行程序的情况下,通过审查、走查等方式分析需求、设计文档和代码,能早期发现高层次缺陷,降低修复成本。动态测试通过实际运行程序,使用单元测试、集成测试等方法验证功能性能,是发现运行时错误的唯一途径。二者在缺陷类型、介入阶段和修复成本上具有互补性,建议项目实践中结合使用以提升软件质量。

数据知道的博客 5788

redis客户端连接方式

客户端几种连接方式。

童小绿 学无止境 899

AI大模型助力现金流精准预测案例详解

因为它的“注意力机制”能像“人一样思考”——比如,当预测“下周现金流”时,模型会重点关注“最近7天的销售数据”“未来7天的天气”“竞品是否有促销”这些关键因素,而忽略“去年同期的无关数据”。AI大模型不是“取代”财务人员,而是“赋能”他们——把财务人员从“重复的Excel操作”中解放出来,专注于“战略决策”(比如如何优化资金结构、如何提升资金利用率)。比如,“促销力度”这个特征,不是简单的“折扣率”,而是“折扣率×促销天数×覆盖SKU数量”,这样能更准确反映促销对现金流的影响。这些问题的核心,其实是。

AIGC应用创新大全的博客 1258

redis client端示例代码

redis提供了几乎所有主流语言的client,Java中主要使用二种:Jedis与Redisson 一、Jedis的使用 1 dependency> 2 groupId>redis.clientsgroupId> 3 artifactId>jedisartifactId> 4 vers

Leonのメモリ 1065

OpenRubrics:自动化评估工具优化LLM对齐效果

在大型语言模型(LLM)应用中,模型输出与人类价值观的对齐是关键挑战。传统人工反馈强化学习(RLHF)依赖大量标注,成本高且一致性差。OpenRubrics作为开源工具,通过结构化准则实现自动化评估,显著提升效率。其核心原理是将主观评价转化为可量化的多维指标,支持动态权重调整,并兼容主流RLHF框架。该工具在降低标注成本的同时,通过Fleiss' Kappa系数等指标保证评估一致性,适用于多语言和医疗等专业领域,为LLM对齐提供了工程化解决方案。

weixin_28730037的博客 360

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

redis 学习笔记-client端示例代码

redis提供了几乎所有主流语言的client,java中主要使用二种:Jedis与Redisson 一、Jedis的使用 1 dependency> 2 groupId>redis.clientsgroupId> 3 artifactId>jedisartifactId> 4 vers

风雪夜归人 464

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Windows 下Redis客户端可视化工具-redis client

目前就我所知,常用的redis客户端可视化工具有 Redis Client ; Redis Desktop Manager ; Redis Studio. Redis Client 可以从redis官网找到:https://redis.io/clients 我下载了一个java版本的: 启动redis client, 并且连接: ...

张中华的博客 5万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【亲测免费】 Redis-client安装与配置完全指南

Redis-client安装与配置完全指南 项目基础介绍及编程语言 Redis-client是一款专为Redis 6+设计的简单低层次客户端库,它同样兼容Valkeyrie 7+、KeyDB以及其他实现RESP3协议的数据库。不同于广为人知的redis宝石(gem),此客户端并不试图将所有Redis命令映射成Ruby特有的结构,而是作为一个薄层封装在 RESP3 协议之上。该库由优快云公司开发的...

gitblog_01214的博客 1852

Redis c++ client选型

redis client基础库选择 在有限的开发维护人员情况下,redis客户端库版本稳定对我们来说就显得非常重要了,选择使用人数较多的库在遇到问题时得到回复或获得解决问题的办法相对较多,redis官网提供的redis client列表如下: 从列表中我们选择官方推荐的客户端hiredis作为我们的客户端基础库 redis c++ client选型 当我们确定了hiredis作为我们的客户端基础...

deanzhang5757的专栏 3389

Redis server与client通信过程简析

简单看一下Redis与客户端的部分网络通信代码

qq_37962605的博客 1269

redis 客户端断开连接_Redis Client Kill 命令

Redis Client Kill 命令 - 关闭客户端连接Redis Client Kill 命令用于关闭客户端连接。语法redis Client Kill 命令基本语法如下:redis 127.0.0.1:6379> CLIENT KILL ip:port可用版本>= 2.4.0返回值成功关闭时,返回 OK 。实例# 列出所有已连接客户端redis 127.0.0.1:6379&g...

weixin_39874350的博客 1660
上一篇: redis中各种数据类型对应的jedis操作命令
下一篇: redis 学习笔记(1)-编译、启动、停止
codepython
博客等级 码龄20年 125粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值