本片将介绍 Redis 在 Java 中的基本使用
文章目录
- 1、使用jedis操作redis
- 1.1、Jedis简介
- 1.2、引入jedis的Maven依赖
- 1.2、获取连接
- 1.3、使用实例
- 2、对于JedisPooled的使用
- 2.1、使用JedisPooled
- 2.2、关于连接池
- 3、SpringBoot下使用Redis
- 3.1、引入Maven依赖
- 3.2、配置Redis连接
- 3.3、创建RedisTemplate
- 3.4、使用RedisTemplate
1、使用jedis操作redis
1.1、Jedis简介
Jedis 是 Java 语言开发的 Redis 客户端工具包,用于 Java 语言与 Redis 数据进行交互。
Jedis 在 github 官网地址:https://github.com/redis/jedis#readme
Jedis 只是对 Redis 命令的封装,掌握 Redis 命令便可轻易上手 Jedis。
Jedis 遵循 RESP 协议规范开发,具有良好的通用性与可读性。
1.2、引入jedis的Maven依赖
redis.clients jedis 4.4.3 1.2、获取连接
对于许多应用程序,需要连接到 Redis 时。最好使用连接池。可以像这样实例化一个 Jedis 连接池:
JedisPool pool = new JedisPool("localhost", 6379);
对于 JedisPool 实例,可以使用 try-With-resources 块获得连接并运行 Redis 命令(这种方式无须自己手动 close)。
try (Jedis jedis = pool.getResource()) { // 运行单个 SET 命令 jedis.set("clientName", "Jedis"); }
1.3、使用实例
编写以下代码:
public static void main(String[] args) { // Redis服务端IP和端口号 JedisPool pool = new JedisPool("127.0.0.1", 6379); try (Jedis jedis = pool.getResource()) { // 使用相关Redis的命令 // 选择第0个数据库进行操作 jedis.select(0); // 向0号数据库写入,字符串数据 jedis.set("Java", "best"); jedis.set("PHP", "good"); // 查询是否写入 System.out.println(jedis.get("Java")); System.out.println(jedis.get("PHP")); } }
运行测试用例:
Jedis 实例实现了大多数 Redis 命令,这些命令可以在 https://www.javadoc.io/doc/redis.clients/jedis/latest/redis/clients/jedis/Jedis.htmlApI 中查询命令对应的方法。
2、对于JedisPooled的使用
2.1、使用JedisPooled
对每个命令使用 try-with-resources 块可能比较麻烦,因此我们可以考虑使用 JedisPooled。
JedisPooled jedis = new JedisPooled("localhost", 6379);
详细代码:
public static void main(String[] args) { JedisPooled pool = new JedisPooled("127.0.0.1", 6379, null, null); pool.set("Java", "best"); pool.set("PHP", "good"); System.out.println(pool.get("Java")); System.out.println(pool.get("PHP")); }
运行效果:
2.2、关于连接池
使用链接池是官方推荐的使用方式,通过连接池可以更好的使用 Jedis 的,我们可以通过 GenericObjectPoolConfig 对连接池进行相关配置,GenericObjectPoolConfig API 文档:https://commons.apache.org/proper/commons-pool/apidocs/org/apache/commons/pool2/impl/GenericObjectPoolConfig.html
通过 GenericObjectPoolConfig 对象对连接池进行配置,具体代码如下:
public static void main(String[] args) { GenericObjectPoolConfig config = new JedisPoolConfig(); // 设置连接池中最多允许放100个Jedis对象 config.setMaxTotal(100); // 设置连接池中最大允许空闲连接 config.setMaxIdle(100); // 设置连接池中最小允许的连接数 config.setMinIdle(10); // 借出连接的时候是否测试有效性,推荐false config.setTestOnBorrow(false); // 归还时是否测试,推荐false config.setTestOnReturn(false); // 创建时是否测试有效 开发的时候设置为false,实践运行的时候设置为true config.setTestOnCreate(false); // 当连接池内jedis无可用资源时,是否等待资源,true config.setBlockWhenExhausted(true); // 没有获取资源时最长等待1秒,1秒后没有还没有的话就报错 config.setMaxWaitMillis(1000); JedisPool pool = new JedisPool(config, "127.0.0.1", 6379); try (Jedis jedis = pool.getResource()) { // 使用相关Redis的命令 // 选择第0个数据库进行操作 jedis.select(0); // 向0号数据库写入,字符串数据 jedis.set("Java", "best"); jedis.set("PHP", "good"); // 查询是否写入 System.out.println(jedis.get("Java")); System.out.println(jedis.get("PHP")); } }
运行效果:
3、SpringBoot下使用Redis
3.1、引入Maven依赖
首先,需要在 pom.xml 文件中添加 Redis 依赖:
org.springframework.boot spring-boot-starter-data-redis这个依赖包含了 Spring Data Redis,以及 Jedis 和 Lettuce 这两种 Redis 客户端的实现。
3.2、配置Redis连接
在 SpringBoot 项目中,可以通过在 application.properties 或 application.yml 文件中配置 Redis 连接信息。以下是一个示例:
spring: data: redis: timeout: 3000 database: 0 password: password port: 6379 host: localhost
其中,host 和 port 分别是 Redis 服务器的地址和端口号,password 是 Redis的密码(如果没有密码,可以不填),timeout 是 Redis 连接超时时间,jedis.pool 是连接池的相关设置。
3.3、创建RedisTemplate
使用 Spring Data Redis 操作 Redis,通常会使用 RedisTemplate 类。为了方便起见,我们可以创建一个工具类来管理 RedisTemplate 的创建和使用。以下是一个示例:
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.Set; import java.util.concurrent.TimeUnit; @Component public class RedisUtils { /** * 如果使用 @Autowired 注解完成自动装配 那么 * RedisTemplate要么不指定泛型,要么泛型 为
或者 在这个示例中,我们使用 @Resource 注解自动注入了一个 RedisTemplate
对象。然后,我们提供了三个方法来对 Redis 进行操作:cacheValue 方法用于缓存数据,getValue 方法用于获取缓存数据,removeValue 方法用于删除缓存数据。这些方法都是通过 redisTemplate 对象来实现的。 需要注意的是,在使用 RedisTemplate 时,需要指定键值对的类型。在这个示例中,我们指定了键的类型为 String,值的类型为 Object。
3.4、使用RedisTemplate
在上面的示例中,我们已经创建了一个 RedisTemplate 对象,并提供了一些方法来对 Redis 进行操作。现在,我们可以在 SpringBoot 项目中的任何地方使用这个工具类来进行缓存操作。以下是一个示例:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @Autowired private RedisUtils redisUtils; @Autowired private UserService userService; @GetMapping("/users/{id}") public User getUserById(@PathVariable Long id) { String key = "user_" + id; User user = (User) redisUtils.getValue(key); if (user == null) { user = userService.getUserById(id); redisUtils.cacheValue(key, user); } return user; } }
在这个示例中,我们创建了一个 UserController 类,用于处理 HTTP 请求。在 getUserById 方法中,我们首先构造了一个缓存的 key,然后使用 redisUtils.getValue 方法从 Redis 中获取缓存数据。如果缓存中没有数据,我们调用 userService.getUserById 方法从数据库中获取数据,并使用 redisUtils.cacheValue 方法将数据存入Redis缓存中。最后,返回获取到的数据。
通过这个示例,我们可以看到,在S pringBoot 项目中使用 Redis 作为缓存的流程。我们首先需要添加 Redis 依赖,然后在配置文件中配置 Redis 连接信息。接着,我们创建了一个 RedisUtil s工具类来管理 RedisTemplate 的创建和使用。最后,我们在控制器中使用 RedisUtils 来对 Redis 进行缓存操作。
猜你喜欢
- 16天前(重庆恐龙化石遗址)重庆黔江恐龙化石抢救性发掘新闻发布会举行
- 16天前(曼谷丽思卡尔顿公寓价格)曼谷丽思卡尔顿酒店盛大启幕,开创泰国奢华雅致新纪元
- 16天前(中国最好的避暑山庄)2025中国十大避暑山庄评选揭晓,澳涞山庄夺魁
- 16天前(武隆旅游门票)炸了!519中国旅游日武隆甩出王炸福利,59.9元通玩6大景点?!
- 16天前(夏日纵享 邂逅双面姑苏是哪一集)夏日纵享 邂逅双面姑苏
- 16天前(星级饭店的发展困境)星级饭店转型之路:从市场逻辑到行业实践的深度探索
- 16天前(上海迪士尼 夏天)酷爽夏日,奇妙相伴!来上海迪士尼度假区清凉入夏
- 16天前(锦州新增两家国家aaa级旅游景区有哪些)锦州新增两家国家AAA级旅游景区
- 16天前(大连aaaaa景区)辽宁大连A级旅游景区应急救护水平整体跃升
- 16天前(“百场黄梅唱响百家景区”示范演出活动在黄山风景区举行)“百场黄梅唱响百家景区”示范演出活动在黄山风景区举行
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章