使用 Java 操作 Redis
Jedis
1. 概述
Jedis 是一款使用 Java 操作 Redis 的工具,有点类似于 JDBC
2. 引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
3. 操作
// 创建 jedis 客户端对象
Jedis jedis = new Jedis("39.108.6.119", 6379);
// 选择使用一个库,默认 0 号库
jedis.select(0);
// 清空当前库
jedis.flushDB();
//设置 redis 字符串数据
jedis.set("key", "value");
//存储数据到列表中
jedis.lpush("list", "value1");
jedis.lpush("list", "value2");
jedis.lpush("list", "value3");
// 更多操作
...
// 释放资源
jedis.close();
具体 API 参考官网文档:https://www.javadoc.io/doc/redis.clients/jedis/latest/index.html
SpringBoot 整合 Redis
1. 概述
SpringData 提供了 RedisTemplate 和 StringRedisTemplate,后者是前者的子集。两个模板基本一致,不同之处体现在操作的数据类型不同。RedisTemplate 中 key 和 value 泛型都是 Object,可以存储一个对象。而 StringRedisTemplate 的两个泛型都是 String,只能存储字符串
2. 引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3. 操作
@SpringBootTest(classes = RedisSpringbootApplication.class)
@RunWith(SpringRunner.class)
public class TestRedisTemplate {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test() {
stringRedisTemplate.opsForValue().set("name", "jack");
String name = stringRedisTemplate.opsForValue().get("name");
// 更多操作...
}
}
具体 API 参考官网文档:https://docs.spring.io/spring-data/redis/docs/current/api/
4. 序列化
无论使用 StringRedisTemplate 还是 RedisTemplate,都会对 key 和 value 进行序列化
Spring-Data-Redis 的序列化方式是通过实现 RedisSerializer 接口,每一种实现都对应不同的序列化方式
4.1 JDK 序列化
org.springframework.data.redis.serializer.JdkSerializationRedisSerializer,RedisTemplate 的默认序列化方式,序列化对象需实现 Serializable 接口,绝大多数情况下,不推荐使用该方式,因为这种方式序列化之后保存的是字节序列,对阅读不友好
4.2 String 序列化
org.springframework.data.redis.serializer.StringRedisSerializer,StringRedisTemplate 的默认序列化方式,这种实现方式比较轻量与高效,但只能对字符串序列化,无法对普通对象序列化
4.3 Json 序列化
org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer 和 org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer,两者都是使用 Jackson 实现 JSON 的序列化方式,不同的是,前者必须在构造序列化对象时传入对象的类型,后者则不需要,并且序列化时将对象类型也保存了
4.4 修改序列化方案
// 以修改序列化方案为 StringRedisSerializer 为例
// 修改 key 序列化方案
redisTemplate.setKeySerializer(RedisSerializer.string());
// 修改 value 序列化方案
redisTemplate.setValueSerializer(RedisSerializer.string());
// 修改 hash key 序列化方案
redisTemplate.setHashKeySerializer(RedisSerializer.string());
// 修改 hash value 序列化方案
redisTemplate.setHashValueSerializer(RedisSerializer.string());
使用 Java 操作 Redis的更多相关文章
- java操作redis之jedis篇
首先来简单介绍一下jedis,其实一句话就可以概括的,就是java操作redis的一种api.我们知道redis提供了基本上所有常用编程语言的clients,大家可以到http://redis.io/ ...
- java 操作redis
使用Java操作Redis需要jedis-2.1.0.jar,如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar package com.test; import ja ...
- windows下Redis安装及利用java操作Redis
一.windows下Redis安装 1.Redis下载 下载地址:https://github.com/MicrosoftArchive/redis 打开下载地址后,选择版本 然后选择压缩包 下载 R ...
- java操作redis集群配置[可配置密码]和工具类(比较好用)
转: java操作redis集群配置[可配置密码]和工具类 java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>red ...
- java操作redis集群配置[可配置密码]和工具类
java操作redis集群配置[可配置密码]和工具类 <dependency> <groupId>redis.clients</groupId> & ...
- Linux+Redis实战教程_day02_3、redis数据类型_4、String命令_5、hash命令_6、java操作redis数据库技术
3. redis数据类型[重点] redis 使用的是键值对保存数据.(map) key:全部都是字符串 value:有五种数据类型 Key名:自定义,key名不要过长,否则影响使用效率 Key名不要 ...
- Java操作Redis工具类
依赖 jar 包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis< ...
- 【redis】java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用
java操作redis时,StringRedisTemplate的expire()方法的作用,什么时候使用 //重新设置过期时间为30分钟,刷新时间 redisTemplate.expire(MsOp ...
- java操作redis学习(一):安装及连接
文章参考自:http://www.cnblogs.com/edisonfeng/p/3571870.html,在此基础上进行了修改. 一.下载安装Redis redis官网显示暂时不支持Windows ...
- Java操作redis【二十】
1.首先需要将redis的绑定地址为127.0.0.1去掉,同时将redis的保护模式去掉,并且开放6379端口. 如果是保护模式需要输入密码才能连接. (1)去掉绑定地址: (2)去掉保护模式: ( ...
随机推荐
- Fail2ban 命令详解 fail2ban-client
Fail2ban的客户端操作命令,用于控制服务端. root@ubuntu:~# fail2ban-client --help Usage: /usr/bin/fail2ban-client [OPT ...
- BERT的优化演进方法汇总(持续更新)
模型结构演进 本文以演进方向和目的为线索梳理了一些我常见到但不是很熟悉的预训练语言模型,首先来看看"完全版的BERT":RoBERTa: A Robustly Optimized ...
- ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
ClickHouse的由来 ClickHouse是什么数据库?ClickHouse速度有多快?应用场景是怎么样的?ClickHouse是关系型数据库吗?ClickHouse目前是很火爆的一款面向OLA ...
- JavaScript中的??和?.和??=操作符
JS中两种不常使用但挺实用的操作符:??和?. 一起来了解并学会使用它们吧: 空值合并操作符:?? 只有当操作符左侧为null或undefined时才会返回操作符右侧的值,否则返回左侧的值. eg: ...
- kruskal 及其应用
kruskal 最小生成树 kruskal 是一种常见且好理解的最小生成树(MST)算法. 前置知识 并查集和路径压缩 生成树 在有 n 的顶点的无向图中,取其中 n-1 条边相连,所得到的树即为生成 ...
- mybatis踩过的坑
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- 安装@parcel/transformer-image注意的问题
安装前配置 npm config get cache 键入以上命令即可找到npm缓存路径,然后找到路径下的_libvips文件夹. 一般需要以下两个文件,这里以win环境为例.把文件放到_libvip ...
- sap 调用Http 服务
REPORT ZMJ_GETAPI. DATA: LEN TYPE I, "发送报文长度 LEN_STRING TYPE STRING, URL TYPE STRING, "接口地 ...
- SAP 实例 6 HTML input
REPORT demo_html_input. CLASS demo DEFINITION. PUBLIC SECTION. CLASS-METHODS main. PRIVATE SECTION. ...
- mysql InnoDB通过.frm和.ibd恢复表和数据
ibdata1是一个用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据.撤销记录.修改buffer和双写buffer.如果file-per-table选项打开的话,该文件则不一 ...