日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

java 中通过 Lettuce 来操作 Redis

發布時間:2023/12/10 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 中通过 Lettuce 来操作 Redis 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

spring-data-redis文檔:?https://docs.spring.io/spring-data/redis/docs/2.0.1.RELEASE/reference/html/#new-in-2.0.0
Redis?文檔:?https://redis.io/documentation
Redis?中文文檔:?http://www.redis.cn/commands.html

本文學習一下如何通過 Java 操作 Redis。

Java 操作 Redis 的庫有兩個,Jedis 和 Lettuce,目前 SpringBoot 2.x 中已經將 Jedis 換成了 Lettuce。

Lettuce?和?Jedis?的都是連接Redis Server的客戶端程序。Jedis在實現上是直連redis server,多線程環境下非線程安全,除非使用連接池,為每個Jedis實例增加物理連接。Lettuce基于Netty的連接實例(StatefulRedisConnection),可以在多個線程間并發訪問,且線程安全,滿足多線程環境下的并發訪問,同時它是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例

本文直接從 Lettuce 來學習。

基本使用

1:添加依賴

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope> </dependency>

?

屬性配置

在?application.properties?文件中配置如下內容

spring.redis.host=localhost #spring.redis.password=battcn # 連接超時時間(毫秒) spring.redis.timeout=10000 # Redis默認情況下有16個分片,這里配置具體使用的分片,默認是0 spring.redis.database=0 # 連接池最大連接數(使用負值表示沒有限制) 默認 8 spring.redis.lettuce.pool.max-active=8 # 連接池最大阻塞等待時間(使用負值表示沒有限制) 默認 -1 spring.redis.lettuce.pool.max-wait=-1 # 連接池中的最大空閑連接 默認 8 spring.redis.lettuce.pool.max-idle=8 # 連接池中的最小空閑連接 默認 0 spring.redis.lettuce.pool.min-idle=0

?

?

?

實體類

創建一個User類

private static final long serialVersionUID = 8655851615465363473L; private Long id; private String username; private String password;public Users(Long id, String username, String password) {this.id = id;this.username = username;this.password = password; }public static long getSerialVersionUID() {return serialVersionUID; }public Long getId() {return id; }public void setId(Long id) {this.id = id; }public String getUsername() {return username; }public void setUsername(String username) {this.username = username; }public String getPassword() {return password; }public void setPassword(String password) {this.password = password; }@Override public String toString() {return "Users{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +'}'; }

?

?

?

新建RedisCacheAutoConfiguration配置類

默認情況下的模板只能支持RedisTemplate<String, String>,也就是只能存入字符串,這在開發中是不友好的,所以自定義模板是很有必要的,當自定義了模板又想使用String存儲這時候就可以使用StringRedisTemplate的方式,它們并不沖突

@Configuration @AutoConfigureAfter(RedisAutoConfiguration.class) public class RedisCacheAutoConfiguration {@Beanpublic RedisTemplate<String, Serializable> redisCacheTemplate(LettuceConnectionFactory redisConnectionFactory) {RedisTemplate<String, Serializable> template = new RedisTemplate<>();template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());template.setConnectionFactory(redisConnectionFactory);return template;} }

?

?

?

?

新建一個SpringbootRedisDemoApplicationTests類測試

private static final Logger log = LoggerFactory.getLogger(SpringbootRedisDemoApplicationTests.class);@Autowired private StringRedisTemplate stringRedisTemplate;@Autowired private RedisTemplate<String, Serializable> redisCacheTemplate;@PostMapping public void get() {ExecutorService executorService = Executors.newFixedThreadPool(8888);IntStream.range(0, 8888).forEach(i ->executorService.execute(() -> stringRedisTemplate.opsForValue().increment("dd", 1)));stringRedisTemplate.opsForValue().set("flag", "好");final String a = stringRedisTemplate.opsForValue().get("flag");log.info("[字符緩存結果] - [{}]", a);String key = "opsForValue:user:1";redisCacheTemplate.opsForValue().set(key, new Users(99L, "小王", "18"));final Users user = (Users) redisCacheTemplate.opsForValue().get(key);System.out.println(user + "*****");log.info("[對象緩存結果] - [{}]", user); }

?

用postman發起請求

?

客戶端工具顯示效果

?

下列的就是Redis其它類型所對應的操作方式

  • opsForValue:?對應 String(字符串)
  • opsForZSet:?對應 ZSet(有序集合)
  • opsForHash:?對應 Hash(哈希)
  • opsForList:?對應 List(列表)
  • opsForSet:?對應 Set(集合)
  • opsForGeo:?對應 GEO(地理位置)

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的java 中通过 Lettuce 来操作 Redis的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品午夜影院 | 久操免费在线 | 天天操天天摸天天干 | 成人夜晚视频 | a级片日本 | 久久久国产精品一区二区三区 | 日韩一区在线免费观看 | 樱花草涩涩www在线播放 | av中出| 制服丝袜天堂网 | 欧美激情另类 | 国产精品100| 好男人www社区在线视频夜恋 | 香蕉91视频 | 亚洲乱码国产乱码精品精98午夜 | 又大又粗弄得我出好多水 | 性欧美激情 | 国产老女人乱淫免费 | 天天久久 | 男人天堂2020 | 久久久久久久黄色 | 欧美日韩精品一区二区在线播放 | 成年丰满熟妇午夜免费视频 | 日本泡妞xxxx免费视频软件 | 亚洲av少妇一区二区在线观看 | 美女视频一区二区 | 精品国产一区二区三 | 免费成人电影在线观看 | 国产精品无码一区二区无人区多人 | 国产精品福利网站 | 玖玖爱这里只有精品 | 奇米精品一区二区三区在线观看一 | 久久中文字 | 最近中文字幕在线视频 | 精品欧美乱码久久久久久1区2区 | 少妇一级淫片免费放2 | 无码国产精品96久久久久 | 成 人 黄 色 片 在线播放 | 伊人免费在线观看高清版 | 麻豆午夜| 国产精品高潮视频 | 欧美一区三区三区高中清蜜桃 | 欧美综合自拍亚洲综合图片区 | 法国经典free性复古xxxx | 一区二区色 | 性色视频在线 | 欧美日韩精品网站 | 国产永久精品大片wwwapp | 人妻少妇精品中文字幕av蜜桃 | 亚洲区一区二区三区 | 浪漫樱花动漫在线观看免费 | 1024手机在线看片 | 色桃网| 日韩三级视频在线 | 成人高潮片免费视频 | kk视频在线观看 | 高清一区二区三区四区五区 | 一卡二卡三卡四卡在线 | 加勒比一区二区三区 | 性欧美视频 | 久久久久久99精品 | 欧美影院在线 | 精品一区二区三区无码视频 | 成年人精品 | 一级特毛片| 草久久久久久 | 桃谷绘里香番号 | 天天网综合 | 香蕉91视频 | 国产精品久久久久久久久久 | 看片久久 | 男人操女人下面 | 多啪啪免费视频 | 草比网站| 精品国模一区二区三区 | 久久久穴 | 欧美又大又硬又粗bbbbb | 亚洲综合精品视频 | 一本久久综合亚洲鲁鲁五月天 | 一级福利视频 | 成人动漫在线观看免费 | 天堂影视在线观看 | 91精品国产入口在线 | 精品亚洲一区二区三区四区五区 | 一区二区视频在线看 | 天天视频黄| 久草网视频 | 日本在线高清视频 | 国产天堂资源 | 免费无遮挡在线观看视频网站 | 国产精品久久久久久久久久小说 | 看免费毛片 | 一区二区三区四区在线免费观看 | 欧美激情18 | 欧美日韩一区二区电影 | 国产一区欧美一区 | 免费av在线 | 少妇高潮一区二区三区99欧美 | 黄色a∨ |