栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis应用

本文章是跟着黑马程序员的课程记录的查看连接

RedisTemplate 导入pom文件

    org.springframework.boot
    spring-boot-starter-data-redis



    org.apache.commons
    commons-pool2



    com.fasterxml.jackson.core
    jackson-databind

编写配置文件
spring:
  redis:
    host: 192.168.150.101
    port: 6379
    password: 123321
    lettuce:
      pool:
        max-active: 8 # 最大连接
        max-idle: 8 # 最大空闲连接
        min-idle: 0 # 最小空闲连接
        max-wait: 100 # 连接等待时间
自定义序列化方式

RedisTemplate可以接受任意Object作为值写入Redis,写入之前会把Object序列化为字节形式,默认是采用JDK序列化,这种序列化之后的结果不完全是我们想要的格式,所以需要自定义序列化方式

@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory)
        throws UnknownHostException {
    // 创建Template
    RedisTemplate redisTemplate = new RedisTemplate<>();
    // 设置连接工厂
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    // 设置序列化工具
    GenericJackson2JsonRedisSerializer jsonRedisSerializer = 
					new GenericJackson2JsonRedisSerializer();
    // key和 hashKey采用 string序列化
    redisTemplate.setKeySerializer(RedisSerializer.string()); 
    redisTemplate.setHashKeySerializer(RedisSerializer.string());
    // value和 hashValue采用 JSON序列化
    redisTemplate.setValueSerializer(jsonRedisSerializer);
    redisTemplate.setHashValueSerializer(jsonRedisSerializer);
    return redisTemplate;
}

编写测试类
// 自动注入RedisTemplate
@Autowired
private RedisTemplate redisTemplate;


// 测试方法
@SpringBootTest
public class RedisTest {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void testString() { 
        // 插入一条string类型数据
        redisTemplate.opsForValue().set("name", "李四");
        // 读取一条string类型数据
        Object name = redisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }
}
StringRedisTemplate

因为RedisTemplate序列化时会存储类的全路径,会造成内存的开销
所以Spring默认提供了StringRedisTemplate类,它的key和value的序列化方式默认是String方式.省去了我们自定义RedisTemplate的过程

@Autowired
private StringRedisTemplate stringRedisTemplate;
// JSON工具
@SpringBootTest
public class RedisTest {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    // JSON工具
    private static final ObjectMapper mapper = new ObjectMapper();
    @Test
    public void test01() throws JsonProcessingException {
        User user = new User();
        user.setName("zhangsan");
        user.setAge(23);
        // 手动序列化
        String json = mapper.writevalueAsString(user);
        // 添加到redis中
        stringRedisTemplate.opsForValue().set("user:001", json);
        // 从redis中读取
        String val = stringRedisTemplate.opsForValue().get("user:001");
        // 反序列化
        User user1 = mapper.readValue(val, User.class);
        System.out.println(user1);
        System.out.println(user1.getName());
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770206.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号