请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

redisTemplate

  1. 老师,实际开发中使用redis时候,是不是data-redis里面的RedisTemplate是首选呢?
  2. 使用RedisTemplate的时候,是不是要首选泛型注入呢?
      对于集合类型,如Set。一般选用何种RedisTemplate呢? 因SetOperations类中对于redis的set类型操作并没有提供如:
    add(K key, Set set)这种API,而是add(K key, V... values)。
    我们总不能将set中的元素一一列举出来去入参所以这个情况我更倾向RedisTemplate<String, Object>或者说RedisTemplate<String, Set<Integer>>
    去进行序列化和反序列化。而不是使用<String, Integer>然后调用RedisTemplate.opsForSet。所以:
  3. RedisTemplate中的非opsForValue的方法存在意义是什么呢?只是适用小数据集的变量参数一一列举出来吗?或者说开发中可能并不会去使用redisTemplate,而是去封装自己的工具类?

正在回答

2回答

同学你好:

    问题一:data-redis 中的 StringRedisTemplate 是首选,RedisTemplate 通常是不建议使用的,因为它会对 Redis 的 key 做修饰。你存储 key-value 时,选择 RedisTemplate 后,key 并不是你所存储的,可以写个 TestCase 看看,也可以看看源码分析下。

    问题二:对于 Set 类型,比较好的存储方式类似于:

StringRedisTemplate rt;
SetOperations<String, String> vo = rt.opsForSet();
vo.add("x", "a","b","c");

    因为 Redis 本身支持的 key 和 value 必须是 String 类型,所以,相关的转换在代码层面做。

3 回复 有任何疑惑可以回复我~
  • 提问者 街边七号 #1
    RedisTemplaye是自定义的RedisTemplate<String, Object>
    其中setKeySerializer(new StringRedisSerializer(utf8))
    setValueSerializer是使用的jackson2JsonRedisSerializer并设置相应的ObjectMapper
    回复 有任何疑惑可以回复我~ 2019-01-27 22:36:56
  • 提问者 街边七号 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-01-30 21:40:31
提问者 街边七号 2019-01-27 11:19:21

问题三知道了, 参数可以直接  toArray()

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信