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(地理位置)

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑选购:看完才明白,一体机和台式机电脑哪个好?

目录 一、空间占用 二、硬件与性能 三、扩展性 四、可维护性 五、移动性 六、一体机和台式机在需求上有什么区别 这里说的一体机和台式机指的是电脑&#xff0c;一体机&#xff0c;顾名思义&#xff0c;就是屏幕和主机集成在一起&#xff0c;更加一体化。台式机分为主机和机箱&…

linux子系统 重置,浅析win10系统重置Linux子系统的设置方法

今天小编给大家浅析win10系统重置Linux子系统的设置方法&#xff0c;重置Linux子系统后&#xff0c;我们就可从头配置Linux子系统&#xff0c;例如新建用户、设置密码&#xff0c;并在里面安装我们需要的应用程序等&#xff0c;有需要的用户&#xff0c;请来看看如何重置吧。Wi…

硬件:那些安装8G、16G以及32G内存电脑的区别介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

Windows系统下安装分布式事务组件Seata

1:github上下载seata安装包 地址为https://github.com/seata/seata/releases/tag/v1.2.0 2:启动seata 点击seata-server.bat脚本文件 启动后入下图所示 3:测试seata是否启动 通过jcmd&#xff0c;可以找到Seata进程

linux应用程序文件丢失,详谈Ubuntu软件管理丢失的功能

多数人都认为Ubuntu通过Ubuntu Software Center彻底改革了dpkg包管理。毫无疑问&#xff0c;按照多数人标准来看&#xff0c;Software Center肯定是用户友好的呢。但事实真是如此么&#xff1f;本文将介绍Ubuntu软件管理的现状&#xff0c;伴随着Ubuntu首次发布的软件管理走了多…

硬件基础:电脑当中各个硬件的作用介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

JAVA8 十大新特性详解

作者&#xff1a;http://m.jb51.net/article/48304.htm?fromtimeline&isappinstalled0本教程将Java8的新特新逐一列出&#xff0c;并将使用简单的代码示例来指导你如何使用默认接口方法&#xff0c;lambda表达式&#xff0c;方法引用以及多重Annotation&#xff0c;之后你…

win8 linux分区工具,Ubuntu下挂载Win8磁盘分区

最近装了个Ubuntu系统&#xff0c;但是一番折腾后发现除了分给Ubuntu的磁盘分区外其他的Win8下磁盘分区都无法访问&#xff0c;在网上找了很多解决方案&#xff0c;但都无法最终解决。经过查阅资料&#xff0c;终于将问题迎刃而解。问题描述&#xff1a;Ubuntu系统下挂载Win8磁…

办公技巧:常用的100个Word快捷键

Word是日常办公和生活的最常用的文字处理软件&#xff0c;大到工作中文章的撰写&#xff0c;小到日常生活中点点滴滴的记录&#xff0c;都离不开Word。在使用Word的时候&#xff0c;快捷键的使用&#xff0c;可以大大提升文字处理的速度。Word的快捷键中&#xff0c;下面这些是…

mysql什么是长事务

1.什么是长事务 首先我们先要知道什么是长事务&#xff0c;顾名思义就是运行时间比较长&#xff0c;长时间未提交的事务&#xff0c;也可以称之为大事务。这类事务往往会造成大量的阻塞和锁超时&#xff0c;容易造成主从延迟&#xff0c;要尽量避免使用长事务。

linux读取目录列表失败,[linux]解决vsftpd 读取目录列表失败的问题

使用第三方FTP软件filezilla进行登陆&#xff0c;出现如下错误&#xff1a;状态: 正在连接 192.168.1.6:21...状态: 连接建立&#xff0c;等待欢迎消息...响应: 220 (vsFTPd 2.2.2)命令: USER ftp响应: 331 Please specify the password.命令: PASS ***响应:…

Win10优化:系统文件Hiberfil.sys介绍

目录 一、Hiberfil.sys介绍 二、删除Hiberfil.sys文件的步骤 1、如何找到Hiberfil.sys 2、通过管理员权限的cmd命令&#xff08;注意要以管理员的身份运行&#xff09; 一、Hiberfil.sys介绍 Hiberfil.sys文件位于系统盘的根目录下&#xff0c;它是 win10 休眠功能&#xff08;…

工作区和暂存区

Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。 先来看名词解释。 工作区&#xff08;Working Directory&#xff09; 就是你在电脑里能看到的目录&#xff0c;比如我的learngit文件夹就是一个工作区&#xff1a; 版本库&#xff08;Repository&#xff09; 工…

2020/5/13号单词

consistent adj. 始终如一的&#xff0c;一致的&#xff1b;坚持的&#xff08;一致的&#xff0c;一贯&#xff0c;坚固定&#xff09; multiple n. 倍数&#xff1b;[电] 并联 adj. 多重的&#xff1b;多样的&#xff1b;许多的 mesh n. 网眼&#xff1b;网丝&#xff1…

后端:Layui实现文件上传功能

今天给大家分享采用AspNet MVC前端框架LayUi实现文件上传功能&#xff0c;感兴趣的朋友可以学习一下。文件上传实体&#xff08;UploadFile.cs&#xff09;public class UploadFile{public int code { get; set; } //请求codepublic string msg { get; set; } // 请求消息pub…

linux arp 防火墙关闭,如何关闭ARP防火墙

360安全卫士和QQ电脑管家都提供了ARP防火墙&#xff0c;但该功能对于家庭用户没有任何意义.那么该如何关闭它呢?下面是学习啦小编收集整理的如何关闭ARP防火墙&#xff0c;希望对大家有帮助~~关闭ARP防火墙的方法工具/原料360安全卫士QQ电脑管家如何关闭360安全卫士的ARP防火墙…

复习知识点:UITableView和UICollectionView的常用属性

UITableView UICollectionView //UICollectionViewLayout //UICollectionViewLayout决定了UICollectionView如何显示在界面上&#xff0c;Apple提供了一个最简单的默认layout对象&#xff1a;UICollectionViewFlowLayout。 //Flow Layout是一个Cells的线性布局方案&#xff0c;…

ASP.NET+MVC+使用+Log4net+记录日志笔记

前言&#xff1a;记录系统中的日志&#xff0c;是一个好的项目产品必备的一个环节。每一个产品最终的目的都是要交予客户使用&#xff0c;因为程序员代码的开发水平参差不齐&#xff0c;Bug就成为了项目运维成本最大的因素之一。如何降低项目运维的成本呢&#xff0c;最重要的是…

git分支feature和hotfix分支

master: 主分支&#xff0c;主要用来版本发布。develop&#xff1a;日常开发分支&#xff0c;该分支正常保存了开发的最新代码。feature&#xff1a;具体的功能开发分支&#xff0c;只与 develop 分支交互。release&#xff1a;release 分支可以认为是 master 分支的未测试版。…

linux查看镜像的详细信息,docker inspect命令查看镜像详细信息

# docker inspect ubuntu:18.04 // 查看镜像的详细信息[{"Id": "sha256:d131e0fa2585a7efbfb187f70d648aa50e251d9d3b7031edf4730ca6154e221e","RepoTags": ["ubuntu:18.04"],"RepoDigests": ["ubuntusha256:d26d529da…