日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:140日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久久蜜桃一区二区人| 国产美女撒尿一区二区| 精品国产乱码久久久| 欧美专区一区| 18国产精品| 日韩精品免费一区二区夜夜嗨 | 日韩免费精品| 国产精品毛片在线看| 久久精品青草| 99精品综合| 亚洲精品网址| 久久电影一区| 亚洲精品看片| 欧美天堂一区二区| 国产精一区二区| 久久av日韩| 加勒比视频一区| 日韩国产欧美一区二区| 国产精品字幕| 不卡在线一区| 久久成人国产| 日韩av一区二| 日本午夜免费一区二区| 国产欧美日韩一级| 精品视频在线观看网站| 国产不卡精品| 婷婷成人在线| 免费看欧美美女黄的网站| 亚洲免费观看高清完整版在线观| 亚洲精品观看| 国产精品视频一区视频二区| 国产一区二区亚洲| 久久精品国语| 在线观看视频免费一区二区三区| 午夜电影一区| 久久精品国产成人一区二区三区| 日韩精品诱惑一区?区三区| 欧美freesex黑人又粗又大| 91精品二区| 日韩avvvv在线播放| 久久久久久久久成人| 久久九九99| 日韩在线a电影| 国产乱人伦丫前精品视频| 中文字幕在线免费观看视频| 亚洲天堂久久| 日本午夜精品视频在线观看| 国产成人精品亚洲线观看| 久久亚洲国产| 日本国产欧美| 日韩精品电影| 亚洲精品美女91| 麻豆精品在线视频| 国产综合视频| 久久激情av| 精品日韩视频| 日本亚洲最大的色成网站www | 欧美亚洲三级| 欧美a级片一区| 精品国模一区二区三区| 日韩免费av| 日本色综合中文字幕| 日本精品不卡| 亲子伦视频一区二区三区| 日本91福利区| 中文字幕日韩亚洲| 亚洲欧美日韩专区| 青青国产精品| 欧美久久天堂| 亚洲另类视频| 国产综合色区在线观看| 日韩精品一区二区三区中文| 日韩精品免费一区二区在线观看 | 日韩中文字幕亚洲一区二区va在线| 久久97视频| 亚洲一区二区成人| 久久久久久婷| 中文亚洲免费| 韩国一区二区三区视频| 国产福利资源一区| 国产第一亚洲| 影音先锋久久精品| 精品一二三区| 热久久免费视频| 国产毛片久久久| 婷婷综合激情| 国产精品久久久久久久久久白浆| 在线精品视频在线观看高清| 18国产精品| 欧美资源在线| 精品久久一区| 中文字幕成人| 欧洲av不卡| 日韩高清不卡一区二区| 成人影视亚洲图片在线| 亚洲高清成人| 国产精品激情| 国产欧美日韩亚洲一区二区三区| 国产亚洲综合精品| 国产suv精品一区| 亚久久调教视频| 久久久久久久久99精品大| 97精品国产99久久久久久免费| 亚洲特级毛片| 精品99在线| 日本伊人久久| 日本美女一区| а√天堂8资源中文在线| 日本不卡视频一二三区| 成人av二区| 国产极品久久久久久久久波多结野 | 欧美日韩国产精品一区二区亚洲| 国产欧美一区二区三区国产幕精品 | 高清日韩中文字幕| 国产精品v日韩精品v欧美精品网站| 欧美天堂在线| 亚洲v天堂v手机在线| 中文一区一区三区免费在线观 | 在线成人动漫av| 色老板在线视频一区二区| 国产精品色在线网站| 99国产精品99久久久久久粉嫩| 麻豆精品蜜桃| 国产在线日韩精品| 日本精品国产| 国产亚洲精品v| 国产精品yjizz视频网| 国产日韩精品视频一区二区三区| 久久亚洲不卡| 亚洲精品高潮| 激情婷婷欧美| 91精品xxx在线观看| 国产+成+人+亚洲欧洲在线| 久久精品国内一区二区三区水蜜桃| 午夜久久福利| 久久国产精品美女| 欧美日本二区| 日韩一级网站| 美女久久久精品| 日韩国产欧美一区二区| 国产精品中文字幕亚洲欧美| 久久久久国产精品一区三寸 | 久久一区欧美| 精品久久在线| 老牛国内精品亚洲成av人片 | 亚洲日本欧美| 午夜欧美精品| 在线一区电影| 九一国产精品| 波多视频一区| 中文在线资源| 高清不卡亚洲| 国产精品探花在线观看| 日韩黄色在线观看| 日韩欧美中文在线观看| 蜜桃视频一区二区三区在线观看| 亚洲综合日本| 伊人精品久久| 日本不卡视频在线| 精品一区不卡| 中文字幕人成乱码在线观看| 日韩欧美国产精品综合嫩v| 色爱av综合网| 欧美日韩三区| 一区二区三区四区日韩| 日韩一区二区三区四区五区| 91成人在线精品视频| 国产亚洲毛片在线| 国产亚洲电影| 好看的亚洲午夜视频在线| 国产一区二区三区自拍| 99pao成人国产永久免费视频| 午夜在线视频观看日韩17c| 蜜臀91精品国产高清在线观看| 综合干狼人综合首页| 日韩欧美中文字幕在线视频| 日韩av一区二区三区| 欧美黑人巨大videos精品| 久久精品国产精品亚洲毛片| 亚洲黄色网址| 婷婷亚洲五月| 国产精品永久| 欧美国产另类| 92国产精品| 日韩一级不卡| 欧美精品第一区| 另类中文字幕国产精品| 影音先锋久久| 国产日韩亚洲| 最近高清中文在线字幕在线观看1| 亚洲二区免费| 日韩一二三区在线观看| 久久婷婷国产| 久久影视一区| 日韩精品免费视频人成| 麻豆国产精品777777在线| 国产不卡人人| 亚洲精品一级| 国产一区调教| 亚洲不卡av不卡一区二区|