Redis — 集成
一、Java 集成 redis
-
集成方式:jedis
-
maven依赖:
<!-- 引入redis客户端依赖 --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.4.2</version> </dependency>
-
测试代码:
import redis.clients.jedis.Jedis; /** * @projName: JavaSkillStack * @packgeName: indi.pentiumcm.redis * @className: RedisTest * @author: pentiumCM * @email: 842679178@qq.com * @date: 2021/10/19 14:08 * @describe: redis 集成 */ public class RedisTest { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("连接成功"); //查看服务是否运行 System.out.println("服务正在运行: " + jedis.ping()); // 1. 存储 字符串String jedis.set("user", "chenmin"); System.out.println("String:" + jedis.get("user")); // 2. 存储 哈希hash jedis.hset("hash_user", "cm", "cm"); jedis.hset("hash_user", "lhy", "lhy"); System.out.println("hash:" + jedis.hget("hash_user", "cm")); // 3. 存储 列表list jedis.lpush("list_user", "cm"); jedis.lpush("list_user", "lhy"); System.out.println("list:" + jedis.lrange("list_user", 0, 10)); // 4. 存储 集合set jedis.sadd("set_user", "cm"); jedis.sadd("set_user", "lhy"); System.out.println("set:" + jedis.smembers("set_user")); // 5. 存储 有序集合zset jedis.zadd("zset_user", 0.05, "5"); jedis.zadd("zset_user", 0.1, "10"); System.out.println("zset:" + jedis.zrange("zset_user", 0, 10)); } }
二、spring 集成 redis
三、springboot 集成 redis
- 参考资料:https://www.jianshu.com/p/5596c3a4978d
-
maven依赖:
<!-- SpringBoot redis依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
-
redis 配置 application.yml:
-
截取 application.yml 中关于 redis 的配置如下:
spring: # redis配置 redis: # 地址 host: 127.0.0.1 # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 password: # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms
-
-
redis的配置类:
-
RedisConfig.java:
import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.*; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * @projName: springbootlearn * @packgeName: indi.pentiumcm.springbootlearn.config * @className: RedisConfig * @author: pentiumCM * @email: 842679178@qq.com * @date: 2021/10/19 15:18 * @describe: redis 配置类 */ @Configuration @EnableCaching //开启注解 public class RedisConfig extends CachingConfigurerSupport { /** * retemplate相关配置 * * @param factory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); // 配置连接工厂 template.setConnectionFactory(factory); //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式) Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); // 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常 om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jacksonSeial.setObjectMapper(om); // 值采用json序列化 template.setValueSerializer(jacksonSeial); //使用StringRedisSerializer来序列化和反序列化redis的key值 template.setKeySerializer(new StringRedisSerializer()); // 设置hash key 和value序列化模式 template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(jacksonSeial); template.afterPropertiesSet(); return template; } /** * String字符串类型数据操作 * * @param redisTemplate * @return */ @Bean public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForValue(); } /** * hash类型的数据操作 * * @param redisTemplate * @return */ @Bean public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForHash(); } /** * List列表类型的数据操作 * * @param redisTemplate * @return */ @Bean public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForList(); } /** * Set无序集合类型的数据操作 * * @param redisTemplate * @return */ @Bean public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForSet(); } /** * Zset有序集合类型的数据操作 * * @param redisTemplate * @return */ @Bean public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) { return redisTemplate.opsForZSet(); } }
-
-
redis 工具类:
-
RedisUtil.java:
-
-
接口用例:
-
RedisController.java:
-