1千万人网站维护成本,精准营销的营销方式,哪些网站做电商比较好,自己做的网站与ie不兼容引言
在现代Web应用开发中#xff0c;数据缓存是提高系统性能和响应速度的关键。Redis作为一种高性能的缓存和数据存储解决方案#xff0c;被广泛应用于各种场景。本文将研究如何使用Spring Boot整合Redis#xff0c;通过这个强大的缓存工具提高应用的性能和可伸缩性。 整合…引言
在现代Web应用开发中数据缓存是提高系统性能和响应速度的关键。Redis作为一种高性能的缓存和数据存储解决方案被广泛应用于各种场景。本文将研究如何使用Spring Boot整合Redis通过这个强大的缓存工具提高应用的性能和可伸缩性。 整合redis,需要先安装redis Redis
Redis是一款key-value存储结构的内存级NoSQL数据库
支持多种数据存储格式支持持久化支持集群
五种数据类型
String(字符串)Hash(哈希)List(列表)Set(集合)zSet(有序集合)
好处
缓存加速Redis是一个高性能的内存数据库使用它可以将常用的数据缓存在内存中从而提高系统的读取速度。例如将数据库查询结果或计算结果缓存到Redis中下次需要时可以直接从Redis获取减少对数据库或计算资源的访问。分布式会话管理在分布式系统中多个服务实例可能需要共享用户的会话信息。Rdis提供了高效的键值存储和过期时间设置可以用于实现分布式会话管理。通过将用户的会话数据存储在Redis中各个服务实例可以无状态地处理请求提高系统的可扩展性和容错性。 队列和消息发布订阅Redis的发布订阅功能可以用于解耦系统的组件或模块之间的通信。你可以使用Redis的队列功能实现异步任务处理、消息队列等场景。同时Redis还提供了强大的消息发布订阅机制可以用于实时推送消息给订阅者。计数器和排行榜Redis支持原子操作和高并发的特性非常适合用于实现计数器和排行榜功能。例如你可以使用Redis的原子操作实现文章或视频的点赞、收富等计数功能也可以使用有序集合实现排行榜。地理位置和地理搜索Reds提供了地理位置的存储和查询功能可以将经纬度坐标存储在Redis中并支持以半径为条件进行搜索。这在实现地理位置相关的应用如附近的人、附近的商家等方面非常有用。分布式锁和限流Redis的分布式锁功能可以用于解决分布式系统中的并发访问问题保证共享资源的正确性。此外Redis还可以用于实现请求限流控制系统的访问频率防止恶意请求或系统过载。
Redis下载 Windows版
https://github.com/tporadowski/redis/releases
Redis安装与启动 Windows版
服务端启动命令
redis-server.exe redis.windows.conf客户端启动命令
redis-cli.exe步骤一引入Redis依赖
首先在Spring Boot项目的pom.xml文件中引入Redis的相关依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependency
步骤二配置Redis连接信息
在application.properties或application.yml中配置Redis连接信息
# Redis配置
spring.redis.hostlocalhost
spring.redis.port6379
spring.redis.passwordyour-password # 如果有密码的话
spring.redis.database0RedisTemplate相关方法
方法说明redisTemplate.opsForValue()操作StringredisTemplate.opsForHash()操作hashredisTemplate.opsForList()操作ListredisTemplate.opsForSet()操作setredisTemplate.opsForZSet()操作有序set
步骤三使用RedisTemplate进行数据操作
SpringBootTest
public class RedisApplicationTests {Autowiredprivate RedisTemplate redisTemplate;Testvoid set() {ValueOperations ops redisTemplate.opsForValue();ops.set(name,奇遇少年);}
}问题出现了当我们使用Redis客户端查看刚刚存入Redis数据库的数据时结果是这样的 这是因为在使用默认的对象RedisTemplate时会把value值序列化为byte类型所以就出现了上图的结果。
解决方案
使用StringRedisTemplate
SpringBootTest(classes RedisApplication.class)
public class RedisApplicationTests {Autowiredprivate StringRedisTemplate stringRedisTemplate;Testvoid set() {ValueOperationsString, String ops stringRedisTemplate.opsForValue();ops.set(name,奇遇少年);}}
自定义序列化方式
Configuration
public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplateString, Object redisTemplate new RedisTemplate();StringRedisSerializer stringRedisSerializer new StringRedisSerializer();redisTemplate.setKeySerializer(stringRedisSerializer);redisTemplate.setHashKeySerializer(stringRedisSerializer);redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializerObject(Object.class));redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());redisTemplate.setConnectionFactory(connectionFactory);return redisTemplate;}
}
redis客户端选择
springboot整合redis技术提供了多种客户端兼容模式默认提供的是lettucs客户端技术也可以根据需要切换成指定客户端技术例如jedis客户端技术切换成jedis客户端技术操作步骤如下
步骤一引入Redis依赖
dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactId
/dependency
jedis坐标受springboot管理无需提供版本号
步骤二配置客户端技术类型设置为jedis
spring:redis:host: localhostport: 6379client-type: jedis
步骤二根据需要设置对应的配置
spring:redis:host: localhostport: 6379client-type: jedislettuce:pool:max-active: 16jedis:pool:max-active: 16
lettcus与jedis区别
jedis连接Redis服务器是直连模式当多线程模式下使用jedis会存在线程安全问题解决方案可以通过配置连接池使每个连接专用这样整体性能就大受影响lettcus基于Netty框架进行与Redis服务器连接底层设计中采用StatefulRedisConnection。 StatefulRedisConnection自身是线程安全的可以保障并发访问安全问题所以一个连接可以被多线程复用。当然lettcus也支持多连接实例一起工作
结语
通过本文的指南你学到了如何使用Spring Boot整合Redis从而提高应用的性能和可伸缩性。Redis作为一种高性能的缓存和数据存储解决方案为应用提供了快速、可靠的数据缓存能力。通过合理配置和使用Redis你能够优化数据访问提高系统的响应速度为用户提供更好的体验。希望这篇博文能够帮助你顺利整合Redis到你的Spring Boot项目中。