电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

spring使用redis操作key-value的示例代碼

瀏覽:88日期:2023-09-18 13:59:09

連接到 Redis

Redis 連接工廠會生成到 Redis 數據庫服務器的連接。Spring Data Redis 為四種 Redis 客戶端實現提供了連接工廠:

JedisConnectionFactory JredisConnectionFactory LettuceConnectionFactory SrpConnectionFactory

具體選擇哪一個取決于你。我建議你自行測試并建立基準,進而確定哪一種 Redis 客戶端和連接工廠最適合你的需求。從 Spring Data Redis 的角度來看,這些連接工廠在適用性上都是相同的。在做出決策之后,我們就可以將連接工廠配置為 Spring 中的 bean。例如,如下展示了如何配置 JedisConnectionFactory bean:

package cn.com.sm.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.StringRedisTemplate;@Configurationpublic class RedisConfig { //通過默認構造器創建的連接工廠會向 localhost 上的 6379 端口創建連接,并且沒有密碼。 @Bean public RedisConnectionFactory redisCF() { return new JedisConnectionFactory(); } //如果你所使用的 value 和 key 都是 String 類型,那么可以考慮使用 StringRedisTemplate 來代替 RedisTemplate: @Bean public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory cf) { return new StringRedisTemplate(cf); }}

假如你配置redis服務器需要用戶認證、運行在其他的主機或端口上:

@Bean public RedisConnectionFactory redisCF() { JedisConnectionFactory cf = new JedisConnectionFactory(); cf.setHostName('redis-server'); cf.setPort(7379); cf.setPassword('foobared'); return cf; }

Spring Data Redis 以模板的形式提供了較高等級的數據訪問方案。實際上,Spring Data Redis 提供了兩個模板:

RedisTemplate StringRedisTemplate

RedisTemplate 可以極大地簡化 Redis 數據訪問,能夠讓我們持久化各種類型的 key 和 value,并不局限于字節數組。在認識到 key 和 value 通常是 String 類型之后,StringRedisTemplate 擴展了 RedisTemplate,只關注 String 類型。

可以按照如下方式來構建StringRedisTemplate:

ApplicationContext ctx = new AnnotationConfigApplicationContext(RedisConfig.class);RedisConnectionFactory cf = (RedisConnectionFactory) ctx.getBean('redisCF'); RedisTemplate redis = new StringRedisTemplate(); redis.setConnectionFactory(cf);

也可以按照如下方式構建RedisTemplate:

//我這里創建了一個Product的java對象RedisTemplate<String, Product> redis = new RedisTemplate<String, Product>();redis.setConnectionFactory(cf);

盡管這并非必須的,但是如果你經常使用 RedisTemplate 或 StringRedisTemplate 的話,你可以考慮將其配置為 bean,然后注入到需要的地方。如下就是一個聲明 RedisTemplate 的簡單 @Bean 方法:

@Bean public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory cf) { return new StringRedisTemplate(cf); }

有了 RedisTemplate(或 StringRedisTemplate)之后,我們就可以開始保存、獲取以及刪除 key-value 條目了。

使用簡單的值

//設置值redis.opsForValue().set('key1','value1');//獲取值redis.opsForValue().get('key1');

使用 List 類型的值

例如,我們可以在一個 List 類型的條目尾部添加一個值:

redis.opsForList().rightPush('cart', product);

而 leftPush() 則會在列表的頭部添加一個值:

redis.opsForList().leftPush('cart', product);

可以通過 leftPop() 或 rightPop() 方法從列表中彈出一個元素:

Product first = redis.opsForList().leftPop('cart');Product last = redis.opsForList().rightPop('cart');

除了從列表中獲取值以外,這兩個方法還有一個副作用就是從列表中移除所彈出的元素。如果你只是想獲取值的話(甚至可能要在列表的中間獲取),那么可以使用 range() 方法:

range() 方法不會從列表中移除任何元素,但是它會根據指定的 key 和索引范圍,獲取范圍內的一個或多個值。前面的樣例中,會獲取 11 個元素,從索引為 2 的元素到索引為 12 的元素(不包含)。如果范圍超出了列表的邊界,那么只會返回索引在范圍內的元素。如果該索引范圍內沒有元素的話,將會返回一個空的列表。

List<Product> products = redis.opsForList().range('cart', 2, 12);

在 Set 上執行操作

添加一個元素:

redis.opsForSet().add('cart', product);

綁定到某個 key 上

BoundListOperations<String, Product> cart = redis.boundListOps('cart'); Product popped = cart.rightPop(); Product product1 = null; cart.rightPush(product1); Product product2 = null; cart.rightPush(product2); Product product3 = null; cart.rightPush(product3);

我們只在一個地方使用了條目的 key,也就是調用 boundListOps() 的時候。對返回的 BoundListOperations 執行的所有操作都會應用到這個 key 上。

使用 key 和 value 的序列化器

當某個條目保存到 Redis key-value 存儲的時候,key 和 value 都會使用 Redis 的序列化器(serializer)進行序列化。Spring Data Redis 提供了多個這樣的序列化器,包括:

GenericToStringSerializer:使用 Spring 轉換服務進行序列化; JacksonJsonRedisSerializer:使用 Jackson 1,將對象序列化為 JSON; Jackson2JsonRedisSerializer:使用 Jackson 2,將對象序列化為JSON; JdkSerializationRedisSerializer:使用 Java 序列化; OxmSerializer:使用 Spring O/X 映射的編排器和解排器 (marshaler 和 unmarshaler)實現序列化,用于 XML 序列化; StringRedisSerializer:序列化 String 類型的 key 和 value。

這些序列化器都實現了 RedisSerializer 接口,如果其中沒有符合需求的序列化器,那么你還可以自行創建。

例如,假設當使用 RedisTemplate 的時候,我們希望將 Product 類型的 value 序列化為 JSON,而 key 是 String 類型。RedisTemplate 的 setKeySerializer() 和 setValueSerializer() 方法就需要如下所示:

@Beanpublic RedisTemplate<String, Product> redisTemplate(RedisConnectionFactory cf) { RedisTemplate<String, Product> redis = new RedisTemplate<String, Product>(); redis.setConnectionFactory(cf); redis.setKeySerializer(new StringRedisSerializer()); redis.setValueSerializer(new Jackson2JsonRedisSerializer<Product>(Product.class)); return redis;}

到此這篇關于spring使用redis操作key-value的示例代碼的文章就介紹到這了,更多相關spring redis操作key-value 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Spring
相關文章:
主站蜘蛛池模板: 天津力值检测-天津管道检测-天津天诚工程检测技术有限公司 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 浙江美尔凯特智能厨卫股份有限公司| 诺冠气动元件,诺冠电磁阀,海隆防爆阀,norgren气缸-山东锦隆自动化科技有限公司 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 施工围挡-施工PVC围挡-工程围挡-深圳市旭东钢构技术开发有限公司 | 净化板-洁净板-净化板价格-净化板生产厂家-山东鸿星新材料科技股份有限公司 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 工业车间焊接-整体|集中除尘设备-激光|等离子切割机配套除尘-粉尘烟尘净化治理厂家-山东美蓝环保科技有限公司 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 培训无忧网-教育培训咨询招生第三方平台 | 智成电子深圳tdk一级代理-提供TDK电容电感贴片蜂鸣器磁芯lambda电源代理经销,TDK代理商有哪些TDK一级代理商排名查询。-深圳tdk一级代理 | PTFE接头|聚四氟乙烯螺丝|阀门|薄膜|消解罐|聚四氟乙烯球-嘉兴市方圆氟塑制品有限公司 | 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | 撕碎机_轮胎破碎机_粉碎机_回收生产线厂家_东莞华达机械有限公司 | MES系统工业智能终端_生产管理看板/安灯/ESOP/静电监控_讯鹏科技 | 政府回应:200块在义乌小巷能买到爱情吗?——揭秘打工族省钱约会的生存智慧 | 地图标注|微信高德百度地图标注|地图标记-做地图[ZuoMap.com] | 多功能三相相位伏安表-变压器短路阻抗测试仪-上海妙定电气 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 视觉检测设备_自动化检测设备_CCD视觉检测机_外观缺陷检测-瑞智光电 | 智能门锁电机_智能门锁离合器_智能门锁电机厂家-温州劲力智能科技有限公司 | 厂房出售_厂房仓库出租_写字楼招租_土地出售-中苣招商网-中苣招商网 | 滤芯,过滤器,滤油机,贺德克滤芯,精密滤芯_新乡市宇清流体净化技术有限公司 | 动库网动库商城-体育用品专卖店:羽毛球,乒乓球拍,网球,户外装备,运动鞋,运动包,运动服饰专卖店-正品运动品网上商城动库商城网 - 动库商城 | 生产加气砖设备厂家很多,杜甫机械加气砖设备价格公道 | 耐酸碱胶管_耐腐蚀软管总成_化学品输送软管_漯河利通液压科技耐油耐磨喷砂软管|耐腐蚀化学软管 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 仓储货架_南京货架_钢制托盘_仓储笼_隔离网_环球零件盒_诺力液压车_货架-南京一品仓储设备制造公司 | 众能联合-提供高空车_升降机_吊车_挖机等一站工程设备租赁 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 留学生辅导网-在线课程论文辅导-留学生挂科申诉机构 | 14米地磅厂家价价格,150吨地磅厂家价格-百科 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 卫生人才网-中国专业的医疗卫生医学人才网招聘网站! | 千淘酒店差旅平台-中国第一家针对TMC行业的酒店资源供应平台 | 万博士范文网-您身边的范文参考网站Vanbs.com | 篮球架_乒乓球台_足球门_校园_竞技体育器材_厂家_价格-沧州浩然体育器材有限公司 |