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

商家网站建设龙岗建设高端网站

商家网站建设,龙岗建设高端网站,网站的图文链接怎么做的,上海建网站工作室【Spring连载】使用Spring Data访问Redis#xff08;四#xff09;----RedisTemplate通过RedisTemplate处理对象Working with Objects through RedisTemplate 一、专注String的便利类二、Serializers 大多数用户可能使用RedisTemplate及其相应的包org.springframework.data.r… 【Spring连载】使用Spring Data访问Redis四----RedisTemplate通过RedisTemplate处理对象Working with Objects through RedisTemplate 一、专注String的便利类二、Serializers 大多数用户可能使用RedisTemplate及其相应的包org.springframework.data.redis.core或其reactive变体ReactiveRedisTemplate。由于其丰富的功能集该template实际上是Redis模块的中心类。template为Redis交互提供了高级抽象。虽然[Reactive]RedisConnection提供了接受和返回二进制值byte数组的low-level方法但template负责序列化和连接管理使用户无需处理这些细节。 RedisTemplate类实现了RedisOperations接口其reactive变体ReactiveRedisTemplate实现了ReactiveRedisOperations。 引用[Reactive]RedisTemplate实例上的操作的首选方式是通过[Reactive]RedisOperations接口。 此外template提供了操作视图遵循Redis命令参考中的分组这些视图提供了丰富的通用接口用于通过KeyBound接口对特定类型或特定key进行操作如下表所示 操作视图 接口描述Key Type 操作GeoOperationsRedis geospatial 操作, 例如 GEOADD, GEORADIUS,…​HashOperationsRedis hash 操作HyperLogLogOperationsRedis HyperLogLog 操作, 例如 PFADD, PFCOUNT,…​ListOperationsRedis list 操作SetOperationsRedis set操作ValueOperationsRedis string (或 value)操作ZSetOperationsRedis zset (或 sorted set)操作Key Bound 操作BoundGeoOperationsRedis key bound geospatial操作BoundHashOperationsRedis hash key bound操作BoundKeyOperationsRedis key bound操作BoundListOperationsRedis list key bound操作BoundSetOperationsRedis set key bound操作BoundValueOperationsRedis string (或 value) key bound操作BoundZSetOperationsRedis zset (或 sorted set) key bound操作 配置后template是线程安全的可以在多个实例中重复使用。 RedisTemplate的大部分操作都使用基于Java的序列化程序。这意味着template写或读的任何对象都通过Java进行序列化和反序列化。 你可以更改template上的序列化机制Redis模块提供了几个实现这些实现在org.springframework.data.redis.serializer包中提供。有关详细信息请参阅序列化程序。你还可以将任何序列化程序设置为null并通过将enableDefaultSerializer属性设置为false让RedisTemplate使用原始字节数组raw byte arrays。请注意template要求所有键都为非null。但是只要底层序列化程序接受null值它们就可以为null。有关更多信息请阅读每个序列化程序的Javadoc。 对于需要某个template视图的情况请将该视图声明为依赖项并注入template。容器自动执行转换消除opsFor[X]调用如以下示例所示 配置 Template API Configuration class MyConfig {BeanLettuceConnectionFactory connectionFactory() {return new LettuceConnectionFactory();}BeanRedisTemplateString, String redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplateString, String template new RedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;} }使用RedisTemplate将一个元素推送到List中 public class Example {// inject the actual operationsAutowiredprivate RedisOperationsString, String operations;// inject the template as ListOperationsResource(nameredisTemplate)private ListOperationsString, String listOps;public void addLink(String userId, URL url) {listOps.leftPush(userId, url.toExternalForm());} }一、专注String的便利类 由于Redis中存储的键和值通常是java.lang.StringRedis模块为RedisConnection和RedisTemplate提供了两个扩展分别是StringRedisConnection及其DefaultStringRedisConnection实现和StringRedisTemplate作为密集String操作的一站式解决方案。除了绑定到String键之外template和连接还使用了StringRedisSerializer这意味着存储的键和值是可读的假设Redis和代码中使用相同的编码。以下列表显示了一个示例 Configuration class RedisConfiguration {BeanLettuceConnectionFactory redisConnectionFactory() {return new LettuceConnectionFactory();}BeanStringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {StringRedisTemplate template new StringRedisTemplate();template.setConnectionFactory(redisConnectionFactory);return template;} }public class Example {Autowiredprivate StringRedisTemplate redisTemplate;public void addLink(String userId, URL url) {redisTemplate.opsForList().leftPush(userId, url.toExternalForm());} }与其他Spring模板一样RedisTemplate和StringRedisTemplate可以通过RedisCallback接口直接与Redis对话。此功能可以给你完全的控制因为它可以直接与RedisConnection对话。请注意当使用StringRedisTemplate时回调将接收StringRedisConnection的实例。下面的例子展示了如何使用RedisCallback接口 public void useCallback() {redisOperations.execute(new RedisCallbackObject() {public Object doInRedis(RedisConnection connection) throws DataAccessException {Long size connection.dbSize();// Can cast to StringRedisConnection if using a StringRedisTemplate((StringRedisConnection)connection).set(key, value);}}); }二、Serializers 从框架的角度来看Redis中存储的数据只有字节。虽然Redis本身支持各种类型但在大多数情况下这些类型指的是数据的存储方式而不是它所代表的内容。由用户决定是将信息转换为字符串还是任何其他对象。 在Spring Data中用户自定义类型和原始数据之间的转换由Spring Data Redis中的org.springframework.data.redis.serializer包处理。 此包包含两种类型的序列化程序顾名思义它们负责序列化过程 基于RedisSerializer的双向序列化程序。使用RedisElementReader和RedisElementWriter的元素读取器和写入器。 这些变体之间的主要区别在于RedisSerializer主要序列化到byte[]而读写器使用ByteBuffer。 有多种实现包括本文档中已经提到的两种 JdkSerializationRedisSerializer默认用于RedisCache和RedisTemplate。StringRedisSerializer。 但是可以通过Spring OXM支持使用OxmSerializer进行Object/XML映射或者使用Jackson2JsonRedisSerializer或GenericJackson2JsonRedisSerializer以JSON格式存储数据。 请注意存储格式不仅限于值。它可以用于键、值或哈希没有任何限制。 默认情况下RedisCache和RedisTemplate被配置为使用Java native序列化。众所周知Java native序列化允许运行由payloads引起的远程代码这些payloads利用易受攻击的库和类注入未经验证的字节码。操作输入可能导致在反序列化步骤期间在应用程序中运行不需要的代码。因此不要在不受信任的环境中使用序列化。通常强烈建议你使用其他消息格式如JSON。 如果你担心Java序列化导致的安全漏洞请考虑核心JVM级别的通用序列化筛选器机制 筛选传入的序列化数据。JEP 290。OWASP不可信数据的反序列化。
http://www.hkea.cn/news/14563090/

相关文章:

  • 网站建设与管理是哪个软件怎么做自己的淘宝客网站
  • 郑州网站推广营销网站开发研究论文
  • 博客网站建设基本流程做网站需要绑定电脑ip吗
  • 珠海专业制作网站企业seo职位
  • 菠菜网站的代理怎么做网站建设 博贤科技
  • 如何查询网站备案号搜索引擎营销与seo优化
  • 品牌网站 响应式网站盘州市城乡建设局网站
  • 网页制作实践 做网站腾讯wordpress 建站
  • 039 织梦云idc网站源码太原医院网站建设
  • 免费建立移动网站吗网站设计费用一览表
  • 电子商务网站规划建设与管理wordpress5.1.1后门利用工具
  • 电商网站开发商国家企业信息系统公示网 (全国)
  • 竹子建站登录对招聘网站页面设计做建议
  • 湖南响应式网站推荐公司做网站哪个公司做得好
  • 浦江网站建设微信开发网页设计入门教学视频
  • 旅游网站建设规划方案平面设计公司名字大全
  • 制作网站需要学什么成都网站优化页面
  • 河南建设网站客户说做网站没效果怎么回答好
  • 做游戏的网站有哪些黄骅市第五中学
  • 百度收录提交网站后多久收录搭建网站吧
  • 普陀区建设局网站网站备案有什么作用
  • 建网站要多少钱 优帮云html5自适应网站模版
  • wordpress编辑器添加短代码按钮广东网站seo策划
  • 可以把网站建设在云主机上吗设计公司介绍
  • 网站自己推广网站建设服务合同模板
  • 介绍几个免费的网站网站宣传文案有哪些
  • 常德网站建设策划方案政务网站群建设需求调研表
  • 中国的网站域名电商推广方式有哪些
  • 余志国外贸网站建设做彩票网站收费标准
  • 建站公司售后服务珠海网站建设 超凡科技