我们以IDEA SpringBoot作为 Java中整合Redis的使用 的测试环境
首先,我们需要导入Redis的maven依赖
<!-- Redis的maven依赖包 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
其次,我们需要在配置文件中配置你的Redis配置信息,我使用的是 .yml文件格式
# redis配置 spring: redis: # r服务器地址 host: 127.0.0.1 # 服务器端口 port: 6379 # 数据库索引(默认0) database: 0 # 连接超时时间(毫秒) timeout: 10s jedis: pool: # 连接池中的最大空闲连接数 max-idle: 8 # 连接池中的最小空闲连接数 min-idle: 0 # 连接池最大连接数(使用负值表示没有限制) max-active: 8 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1
对 redis 做自定义配置
import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfigurer extends CachingConfigurerSupport { /** * redisTemplate 序列化使用的jdkSerializeable, 存储二进制字节码, 所以自定义序列化类 */ @Bean public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) { // 配置redisTemplate RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(lettuceConnectionFactory); // 设置序列化 Jackson2JsonRedisSerializer<Object> redisSerializer = getRedisSerializer(); // key序列化 redisTemplate.setKeySerializer(new StringRedisSerializer()); // value序列化 redisTemplate.setValueSerializer(redisSerializer); // Hash key序列化 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); // Hash value序列化 redisTemplate.setHashValueSerializer(redisSerializer); redisTemplate.afterPropertiesSet(); return redisTemplate; } /** * 设置Jackson序列化 */ private Jackson2JsonRedisSerializer<Object> getRedisSerializer() { Jackson2JsonRedisSerializer<Object> redisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); redisSerializer.setObjectMapper(om); return redisSerializer; } }
然后,我们需要创建一个RedisUtil来对Redis数据库进行操作
package com.zyxx.test.utils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; /** * @ClassName RedisUtil * @Author * @Date 2019-08-03 17:29:29 * @Version 1.0 **/ @Component public class RedisUtil { @Autowired private RedisTemplate<String, String> template; /** * 读取数据 * * @param key * @return */ public String get(final String key) { return template.opsForValue().get(key); } /** * 写入数据 */ public boolean set(final String key, String value) { boolean res = false; try { template.opsForValue().set(key, value); res = true; } catch (Exception e) { e.printStackTrace(); } return res; } /** * 根据key更新数据 */ public boolean update(final String key, String value) { boolean res = false; try { template.opsForValue().getAndSet(key, value); res = true; } catch (Exception e) { e.printStackTrace(); } return res; } /** * 根据key删除数据 */ public boolean del(final String key) { boolean res = false; try { template.delete(key); res = true; } catch (Exception e) { e.printStackTrace(); } return res; } /** * 是否存在key */ public boolean hasKey(final String key) { boolean res = false; try { res = template.hasKey(key); } catch (Exception e) { e.printStackTrace(); } return res; } /** * 给指定的key设置存活时间 * 默认为-1,表示永久不失效 */ public boolean setExpire(final String key, long seconds) { boolean res = false; try { if (0 < seconds) { res = template.expire(key, seconds, TimeUnit.SECONDS); } } catch (Exception e) { e.printStackTrace(); } return res; } /** * 获取指定key的剩余存活时间 * 默认为-1,表示永久不失效,-2表示该key不存在 */ public long getExpire(final String key) { long res = 0; try { res = template.getExpire(key, TimeUnit.SECONDS); } catch (Exception e) { e.printStackTrace(); } return res; } /** * 移除指定key的有效时间 * 当key的有效时间为-1即永久不失效和当key不存在时返回false,否则返回true */ public boolean persist(final String key) { boolean res = false; try { res = template.persist(key); } catch (Exception e) { e.printStackTrace(); } return res; } }
最后,我们可以使用单元测试来检测我们在RedisUtil中写的操作Redis数据库的方法
package com.zyxx.test; import com.zyxx.test.utils.RedisUtil; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import javax.annotation.Resource; @RunWith(SpringRunner.class) @SpringBootTest public class TestApplicationTest { @Resource private RedisUtil redisUtil; @Test public void setRedis() { boolean res = redisUtil.set("jay", "周杰伦 - 《以父之名》"); System.out.println(res); } @Test public void getRedis() { String res = redisUtil.get("jay"); System.out.println(res); } @Test public void updateRedis() { boolean res = redisUtil.update("jay", "周杰伦 - 《夜的第七章》"); System.out.println(res); } @Test public void delRedis() { boolean res = redisUtil.del("jay"); System.out.println(res); } @Test public void hasKey() { boolean res = redisUtil.hasKey("jay"); System.out.println(res); } @Test public void expire() { boolean res = redisUtil.setExpire("jay", 100); System.out.println(res); } @Test public void getExpire() { long res = redisUtil.getExpire("jay"); System.out.println(res); } @Test public void persist() { boolean res = redisUtil.persist("jay"); System.out.println(res); } }
建议使用redis-desktop-manager作为Redis数据库中数据的显示工具
至此,我们在日常项目中整合Redis的基本使用操作就完成了,但在实际项目中,可能会涉及到更复杂的用法,可以根据你的业务需求调整Redis的使用即可。
以上是SpringBoot怎么整合Redis实现热点数据缓存的详细内容。更多信息请关注PHP中文网其他相关文章!

Redis的关键特性包括速度、灵活性和丰富的数据结构支持。1)速度:Redis作为内存数据库,读写操作几乎瞬时,适用于缓存和会话管理。2)灵活性:支持多种数据结构,如字符串、列表、集合等,适用于复杂数据处理。3)数据结构支持:提供字符串、列表、集合、哈希表等,适合不同业务需求。

Redis的核心功能是高性能的内存数据存储和处理系统。1)高速数据访问:Redis将数据存储在内存中,提供微秒级别的读写速度。2)丰富的数据结构:支持字符串、列表、集合等,适应多种应用场景。3)持久化:通过RDB和AOF方式将数据持久化到磁盘。4)发布订阅:可用于消息队列或实时通信系统。

Redis支持多种数据结构,具体包括:1.字符串(String),适合存储单一值数据;2.列表(List),适用于队列和栈;3.集合(Set),用于存储不重复数据;4.有序集合(SortedSet),适用于排行榜和优先级队列;5.哈希表(Hash),适合存储对象或结构化数据。

Redis计数器是一种使用Redis键值对存储来实现计数操作的机制,包含以下步骤:创建计数器键、增加计数、减少计数、重置计数和获取计数。Redis计数器的优势包括速度快、高并发、持久性和简单易用。它可用于用户访问计数、实时指标跟踪、游戏分数和排名以及订单处理计数等场景。

使用 Redis 命令行工具 (redis-cli) 可通过以下步骤管理和操作 Redis:连接到服务器,指定地址和端口。使用命令名称和参数向服务器发送命令。使用 HELP 命令查看特定命令的帮助信息。使用 QUIT 命令退出命令行工具。

Redis集群模式通过分片将Redis实例部署到多个服务器,提高可扩展性和可用性。搭建步骤如下:创建奇数个Redis实例,端口不同;创建3个sentinel实例,监控Redis实例并进行故障转移;配置sentinel配置文件,添加监控Redis实例信息和故障转移设置;配置Redis实例配置文件,启用集群模式并指定集群信息文件路径;创建nodes.conf文件,包含各Redis实例的信息;启动集群,执行create命令创建集群并指定副本数量;登录集群执行CLUSTER INFO命令验证集群状态;使

要从 Redis 读取队列,需要获取队列名称、使用 LPOP 命令读取元素,并处理空队列。具体步骤如下:获取队列名称:以 "queue:" 前缀命名,如 "queue:my-queue"。使用 LPOP 命令:从队列头部弹出元素并返回其值,如 LPOP queue:my-queue。处理空队列:如果队列为空,LPOP 返回 nil,可先检查队列是否存在再读取元素。

Redis 集群中使用 zset:zset 是一种有序集合,将元素与评分关联。分片策略: a. 哈希分片:根据 zset 键的哈希值分布。 b. 范围分片:根据元素评分划分为范围,并将每个范围分配给不同的节点。读写操作: a. 读操作:如果 zset 键属于当前节点的分片,则在本地处理;否则,路由到相应的分片。 b. 写入操作:始终路由到持有 zset 键的分片。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

记事本++7.3.1
好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3汉化版
中文版,非常好用