一、引言
Redis是一个高性能的键值对存储系统,被广泛应用于各种场景。Java作为一门强大的编程语言,拥有丰富的库和工具,使得开发者能够轻松操作Redis。在之前一篇Java连接Redis基础案例,也讲解了如何使用Java连接Redis了,也算是对Redis有初步认识,这一篇将深入Redis基础数据类型操作,并通过Java实例代码来演示实现过程。关于Redis五大基础数据类型可看看这篇博文:https://cloud.tencent.com/developer/article/2353231
二、Java操作Redis五大基础数据类型
String类型
Java操作Redis的String类型,算是比较基础和常见,在平时工作开发中用String类型进行redis缓存操作也是比较多,下面通过代码示例进行说明:
代码语言:java复制import redis.clients.jedis.Jedis;
import java.util.Random;
public class RedisStringExample {
public static void main(String[] args) {
// 创建一个Jedis连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(50);
jedisPoolConfig.setMinIdle(10);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
// 创建一个字符串
String str = "Hello, Redis!";
// 设置字符串
jedisPool.set(str);
// 获取字符串
String getStr = jedisPool.get();
System.out.println(getStr);
// 拼接字符串
String concatStr = "Hello, " str;
jedisPool.set(concatStr);
// 拆分字符串
String[] splitStr = concatStr.split(",");
System.out.println(splitStr.length);
// 删除字符串
jedisPool.del(str);
}
}
List类型
Java操作Redis的List类型,有序重复列表,主要包括添加、获取、删除元素等操作。下面通过代码示例进行说明:
代码语言:java复制import redis.clients.jedis.Jedis;
import java.util.ArrayList;
public class RedisListExample {
public static void main(String[] args) {
// 创建一个Jedis连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(50);
jedisPoolConfig.setMinIdle(10);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
// 创建一个列表
ArrayList<String> list = new ArrayList<String>();
list.add("apple");
list.add("orange");
list.add("banana");
// 添加元素
jedisPool.set(list);
// 获取列表
ArrayList<String> getList = jedisPool.get();
System.out.println(getList);
// 删除列表
jedisPool.del(list);
}
}
Hash类型
Java操作Redis的Hash类型,等价于<key,<key,object>>,也就是对于Java中的话结构是Map里面的值是Map,主要包括设置、获取、删除键值对等操作。下面通过代码示例进行说明:
代码语言:java复制import redis.clients.jedis.Jedis;
import java.util.HashMap;
public class RedisHashExample {
public static void main(String[] args) {
// 创建一个Jedis连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(50);
jedisPoolConfig.setMinIdle(10);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
// 创建一个Hash
HashMap<String, String> hash = new HashMap<String, String>();
hash.put("name", "john");
hash.put("age", "30");
// 设置Hash
jedisPool.set(hash);
// 获取Hash
HashMap<String,String> getHash = jedisPool.get();
System.out.println(getHash);
// 删除Hash
jedisPool.del(hash);
}
}
Set类型
Java操作Redis的Set类型,Set类型是主要处理需要去重的数据,但是顺序不能控制,包括添加、获取、删除元素等操作。下面通过代码示例进行说明:
代码语言:java复制import redis.clients.jedis.Jedis;
import java.util.HashSet;
public class RedisSetExample {
public static void main(String[] args) {
// 创建一个Jedis连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(50);
jedisPoolConfig.setMinIdle(10);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
// 创建一个Set
HashSet<String> set = new HashSet<String>();
set.add("apple");
set.add("orange");
set.add("banana");
// 添加元素
jedisPool.set(set);
// 获取Set
HashSet<String> getSet = jedisPool.get();
System.out.println(getSet);
// 删除Set
jedisPool.del(set);
}
}
Zset类型
Java操作Redis的Zset类型,完善set类型不可排序,新增一个score参数,对数据进行排序,主要包括添加、获取、删除元素,以及有序集合的合并、比较等操作。下面通过代码示例进行说明:
代码语言:java复制import redis.clients.jedis.Jedis;
import java.util.List;
import java.util.Set;
public class RedisZsetExample {
public static void main(String[] args) {
// 创建一个Jedis连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(100);
jedisPoolConfig.setMaxIdle(50);
jedisPoolConfig.setMinIdle(10);
jedisPoolConfig.setTestOnBorrow(true);
jedisPoolConfig.setTestOnReturn(true);
JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
// 创建一个Zset
Long zset = 30L;
String key = "myzset";
Set<String> set = new HashSet<String>();
set.add("apple");
set.add("orange");
set.add("banana");
// 添加元素
jedisPool.set(set);
// 获取Zset
List<String> getZset = jedisPool.get();
System.out.println(getZset);
// 删除Zset
jedisPool.del(zset);
// 合并Zset
Long zset2 = 20L;
String key2 = "myzset2";
Set<String> set2 = new HashSet<String>();
set2.add("apple");
set2.add("orange");
set2.add("banana");
// 合并Zset
jedisPool.set(zset2, set2);
// 比较Zset
Long result = jedisPool.zadd(key, set2);
System.out.println(result);
// 获取Zset
List<String> getZset2 = jedisPool.zrangeByScore(key, 0, 10);
System.out.println(getZset2);
// 关闭连接
jedisPool.close();
}
}
以上代码演示了如何使用Java操作Redis的String、List、Hash、Set和Zset类型。注意,在使用Java操作Redis时,需要导入redis的Java客户端库,并在代码中导入相关的包,可以用maven进行项目管理,这样就方便依赖导入。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!