当前位置: 首页 > wzjs >正文

小面网站建设dw个人网站制作

小面网站建设,dw个人网站制作,一般公司网站的后台管理在哪,整站优化昌吉可以吗?前言 感觉StringRedisTemplate和RedisTemplate非常的相识,到底有什么区别和联系呢?点开idea,打开其依赖关系,可以看出只需使用maven依赖包spring-boot-starter-data-redis,然后在service中注入StringRedisTemplate或者…

前言

感觉StringRedisTemplate和RedisTemplate非常的相识,到底有什么区别和联系呢?点开idea,打开其依赖关系,可以看出只需使用maven依赖包spring-boot-starter-data-redis,然后在service中注入StringRedisTemplate或者RedisTemplate即可使用。

从下图StringRedisTemplate继承了RedisTemplate,所以两者对Redis的操作方法具有相同之处

实验软件:RedisDesktopManager

RedisTemplate

RedisTemplate使用的是JdkSerializationRedisSerializer存入数据,会将数据先序列化成字节数组,然后在存入Redis数据库。

如果数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。

你会看到你的数据不是以可读的形式展现的,而是以字节数组显示,类似下面

当然从Redis获取数据的时候,也会默认将数据当做字节数组转化,这样就会导致一个问题,当需要获取的数据,不是以字节数组存在redis当中,而是正常的可读的字符串的时候,比如说下面这种形式的数据

RedisTemplate就无法获取导数据,这个时候获取到的值就是NULL。这个时候StringRedisTempate就派上了用场。

StringRedisTemplate

源码是:

package org.springframework.data.redis.core; import org.springframework.data.redis.connection.DefaultStringRedisConnection;import org.springframework.data.redis.connection.RedisConnection;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer; public class StringRedisTemplate extends RedisTemplate<String, String> {    public StringRedisTemplate() {        RedisSerializer<String> stringSerializer = new StringRedisSerializer();        this.setKeySerializer(stringSerializer);        this.setValueSerializer(stringSerializer);        this.setHashKeySerializer(stringSerializer);        this.setHashValueSerializer(stringSerializer);    }     public StringRedisTemplate(RedisConnectionFactory connectionFactory) {        this();        this.setConnectionFactory(connectionFactory);        this.afterPropertiesSet();    }     protected RedisConnection preProcessConnection(RedisConnection connection, boolean existingConnection) {        return new DefaultStringRedisConnection(connection);    }}

StringRedisTemplate使用的是StringRedisSerializer,当你的redis数据库里面本来存的是字符串数据,或者你要存取的数据就是字符串类型数据的时候,那么你就使用StringRedisTemplate即可。

当redis中存入的数据是可读形式而非字节数组时,使用redisTemplate取值的时候会无法获取导出数据,获得的值为null。可以使用 StringRedisTemplate 试试。

StringRedisTemplate对于Redis的操作方法:

StringRedisTemplate.opsForValue().* //操作String字符串类型StringRedisTemplate.delete(key/collection) //根据key/keys删除StringRedisTemplate.opsForList().*  //操作List类型StringRedisTemplate.opsForHash().*  //操作Hash类型StringRedisTemplate.opsForSet().*  //操作set类型StringRedisTemplate.opsForZSet().*  //操作有序set

在生产环境中想通用StringRedisTemplate和RedisTemplate

混合使用问题

下面先看一个单元测试:

@Slf4j@SpringBootTestclass RedisDifferentTemplateTest {    @Resource    private RedisTemplate<String, Object> redisTemplate;     @Resource    private StringRedisTemplate stringRedisTemplate;     @Test    void testSimple() {        redisTemplate.opsForValue().set("baidu", "www.jenkins_baidu.com");        Assertions.assertEquals("www.jenkins_baidu.com", redisTemplate.opsForValue().get("baidu"));         Assertions.assertEquals("www.jenkins_baidu.com",stringRedisTemplate.opsForValue().get("baidu"));    }}

在上述方法中先通过redisTemplate存储一个key为baidu的数据到Redis中,随后通过redisTemplate获取并判断断言,可以成功通过。但随后通过stringRedisTemplate获取同样的key的值,则抛出异常,异常信息如下:

org.opentest4j.AssertionFailedError: Expected :www.jenkins_baidu.comActual   :null <Click to see difference>

也就是说获取的结果为null,也就是说StringRedisTemplate只能管理StringRedisTemplate里面的数据,RedisTemplate只能管理RedisTemplate中的数据。

StringRedisTemplate取不到RedisTemplate里面的数据。

那么,我们再通过Redis客户端看一下两种形式存储到redis中key的值的情况。

可以看到通过StringRedisTemplate存储的数据Key为“myWeb”,而RedisTemplate存储的Key为“\xAC\xED\x00\x05t\x00\x05myWeb”,这也就是为什么默认情况下两者存储的数据没办法混合使用了。

在生产环境中想通用StringRedisTemplate和RedisTemplate进行字符串的处理该怎么办?

解决方案

此时就需要指定统一的Key与Value的序列化处理类,比如在RedisTemplate序列化时,指定与StringRedisTemplate相同的默认的序列化类,进行统一修改。

@BeforeEachvoid init() {    redisTemplate.setKeySerializer(new StringRedisSerializer());    redisTemplate.setValueSerializer(new StringRedisSerializer());}

在configuration中配置redisSessionTemplate,注意几个Serializer的配置,不匹配会导致读取出错

@Beanpublic <K,V> RedisTemplate<K, V> redisSessionTemplate(RedisConnectionFactory factory) {RedisTemplate<K, V> template = new RedisTemplate<>();// 配置连接工厂template.setConnectionFactory(factory);//JdkSerializationRedisSerializer jdkRedisSerializer = new JdkSerializationRedisSerializer();RedisSerializer<String> keySerializer = new StringRedisSerializer();RedisSerializer<Object> valueSerializer = new JdkSerializationRedisSerializer(this.getClass().getClassLoader());// 值采用json序列化template.setValueSerializer(valueSerializer);//使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(keySerializer);// 设置hash key 和value序列化模式template.setHashKeySerializer(keySerializer);template.setHashValueSerializer(valueSerializer);template.afterPropertiesSet();return template;}………………………………String sessionKey ="spring:session:sessions:" + sessionId;redisSessionTemplate.opsForHash().get(sessionKey, "sessionAttr:currentUser");redisSessionTemplate.opsForHash().get(sessionKey, "sessionAttr:loginAccount");

文章转载自:

http://uHl9cqUZ.bnbtp.cn
http://lLdcNNC3.bnbtp.cn
http://42LHpsGa.bnbtp.cn
http://gBoKpCKg.bnbtp.cn
http://fXh3QPb3.bnbtp.cn
http://CpatR7s1.bnbtp.cn
http://cpMsVfSR.bnbtp.cn
http://3f8w65Ri.bnbtp.cn
http://DJnTHFbh.bnbtp.cn
http://HRE4GMBh.bnbtp.cn
http://RGjvaOny.bnbtp.cn
http://rid5Zi21.bnbtp.cn
http://FEOugMM3.bnbtp.cn
http://5c8wNIqt.bnbtp.cn
http://Otqqg6Ef.bnbtp.cn
http://UQikwab6.bnbtp.cn
http://ehaCiFH9.bnbtp.cn
http://nu9DjKgy.bnbtp.cn
http://AvoKxBUP.bnbtp.cn
http://egLz1g6U.bnbtp.cn
http://h6nG30Nl.bnbtp.cn
http://pcg3EHmd.bnbtp.cn
http://9EvDL86o.bnbtp.cn
http://xRITkqDa.bnbtp.cn
http://S2A2cuSq.bnbtp.cn
http://6XX9YIaS.bnbtp.cn
http://Nhyt5eTD.bnbtp.cn
http://TXnToWeJ.bnbtp.cn
http://4URKqG8c.bnbtp.cn
http://m4sUuol1.bnbtp.cn
http://www.dtcms.com/wzjs/609004.html

相关文章:

  • 品牌网站建站公司怎么给自己的网站设置关键词
  • 购买域名后怎么做网站网站域名解析错误怎么解决
  • 企业网站开发需求分析模板做网站应聘平台
  • 网站开发价格明细旅游网页设计页面 模板html
  • o2o网站建设价格做网贷网站多少钱
  • js网站统计代码设计公司网站需要什么条件
  • 网站空间 云端机械加工种类
  • 东南融通网站建设wordpress拖拽式
  • 淘宝客怎么做直播网站吗吴江区城乡建设局网站
  • 模具东莞网站建设网站维护都是一些什么公司
  • 网站开发工具大全马鞍山钢铁建设集团有限公司网站
  • 简单的网站有哪些临海响应式网站设计
  • mini主机做网站服务器网站的备案的要多少钱
  • 万网免费建企业网站滨州做网站多少钱
  • 东莞乐从网站建设wordpress去掉浏览数
  • 广州网站优化工具服务住建设部官方网站
  • 锦州制作网站公司龙岩兼职招聘最新发布
  • 小网站从哪找的做预定网站的作用
  • 网站前台管理系统手机网站开发c 教程
  • 网站定制业务合肥网站制作推广
  • 做网站服务器收费吗pc响应式网站设计
  • 购物网站建设哪家好福安做网站最好
  • 沈阳制作网站wordpress 页脚改颜色
  • ui设计师作品集网站常州云之家网站建设网络公司怎么样
  • 免费设计网站logo什么网站做二维码比较好
  • 织里网站建设网站建设和维护公司
  • 整站优化和关键词优化的区别怎么查看网站用什么做的
  • 自己电脑做网站还用备案做设计英文网站
  • 长安网站建设方案网站代更新
  • 免费网站建设可信赖手机如何登录wordpress