本文介绍java操作Redis的常见方法
采用Jedis方法操作,需要引入jedis jar包,本例子引用的是:jedis-5.2.0-beta4.jar
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class RedisTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
/*
* java redis读写操作 实现数据读写操作
*/
public static void redisTest() {
// 连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost", 6379);
// 如果 Redis 服务设置了密码,需要下面这行,没有就不需要
// jedis.auth("123456");
System.out.println("连接成功");
// 查看服务是否运行
System.out.println("服务正在运行: " + jedis.ping());
// 清除 redis 所有数据库中的所有数据
// jedis.flushAll();
// Redis Java String(字符串) 实例
// 设置 redis 字符串数据
jedis.set("runoobkey", "www.runoob.com");
// 获取存储的数据并输出
System.out.println("redis 存储的字符串为: " + jedis.get("runoobkey"));
// Redis Java List(列表) 实例
// 存储数据到列表中,在列表头部插入元素
jedis.lpush("site-list", "Runoob");
jedis.lpush("site-list", "Google");
jedis.lpush("site-list", "Taobao");
// 在列表尾部插入元素
jedis.rpush("site-list", "baidu");
jedis.rpush("site-list", "qq");
// 获取存储的数据并输出
// Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。
// 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2
// 表示列表的倒数第二个元素,以此类推。
List<String> list = jedis.lrange("site-list", 0, -1);
for (int i = 0; i < list.size(); i++) {
System.out.println("列表项为: " + list.get(i));
}
// 获取列表的长度
long length = jedis.llen("site-list");
System.out.println("Length of list: " + length);
// 列表头部移除元素
String element = jedis.lpop("site-list");
System.out.println("Element removed from head: " + element);
// 从列表尾部移除元素
element = jedis.rpop("site-list");
System.out.println("Element removed from tail: " + element);
// Redis Java Keys 实例
// 存储
jedis.set("key1", "value1");
// 设置过期时间:
jedis.expire("key1", 30);// 设置有效期时间为30秒
// 获取redis库内所有key数据并输出
Set<String> keys = jedis.keys("*");
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String key = it.next();
System.out.println(key);
}
// Redis Java Hash 实例
// 向 redis 中添加一个哈希表类型的键值对,哈希表中添加了 f1 - 111 键值对
// 返回值为添加成功的键值对个数
long result1 = jedis.hset("hash_key1", "k1", "111");
System.out.println("result1:" + result1);
long result2 = jedis.hset("hash_key1", "k2", "222");
System.out.println("result2:" + result2);
// 判断 hash_key1 对应的哈希表中是否存在 key 为 k1 的键值对,存在返回 true ,否则返回 false
boolean exitFlag = jedis.hexists("hash_key1", "k1");
System.out.println("exitFlag:" + exitFlag);
// 删除 hash_key1 对应的哈希表中 key 为 k1 和 k2 的键值对
long delFlag = jedis.hdel("hash_key1", "k1", "k1");
System.out.println("delFlag:" + delFlag);
// 获取 hash_key1 对应的哈希表中所有键值对的 key 值
Set<String> r1 = jedis.hkeys("hash_key1");
System.out.println("r1:" + r1);
// 获取 key1 对应的哈希表中所有键值对的 value 值
List<String> r2 = jedis.hvals("hash_key1");
System.out.println("r2:" + r2);
// 用哈希表作为参数,直接将哈希表中的键值对都添加到 hash_key2 的哈希表中
// 返回值为添加成功的键值对个数
HashMap<String, String> hashMap = new HashMap<>();
hashMap.put("k1", "111");
hashMap.put("k2", "222");
hashMap.put("k3", "333");
long result3 = jedis.hset("hash_key2", hashMap);
System.out.println("result3:" + result3);
// 获取 hash_key1 对应的哈希表中,k1 对应的 value 值
String result4 = jedis.hget("hash_key1", "k1");
System.out.println("result4:" + result4);
// 获取hash中所有字段和值
Map<String, String> hashMap1 = jedis.hgetAll("hash_key1");
for (java.util.Map.Entry<String, String> entry : hashMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// Redis Java Set 实例
// 向set中添加元素
jedis.sadd("mySet1", "element1");
jedis.sadd("mySet1", "element2");
jedis.sadd("mySet1", "element3");
// 获取set中的所有元素
Set<String> elements = jedis.smembers("mySet1");
// 打印所有元素
for (String element1 : elements) {
System.out.println(element1);
}
// 判断set 键值对的集合中,element1 是否存在,存在返回 true,不存在返回 false
exitFlag = jedis.sismember("mySet1", "element1");
System.out.println("exitFlag:" + exitFlag);
// 获取集合 mySet1 中的元素个数
long count = jedis.scard("mySet1");
System.out.println("count:" + count);
// 随机弹出(删除)集合中的一个元素
String str1 = jedis.spop("mySet1");
System.out.println("str1:" + str1);
jedis.sadd("mySet2", "element2");
jedis.sadd("mySet2", "element3");
jedis.sadd("mySet2", "element4");
// 获取集合 mySet1 和 mySet2 的交集
Set<String> set1 = jedis.sinter("mySet1", "mySet2");
System.out.println("set1:" + set1);
// 将集合 mySet1 和 mySet2 的交集保存到集合 mySet3 中,返回值是交集的个数.
// 如果 mySet3 中原本有数据,原来的数据会被清空
count = jedis.sinterstore("mySet3", "mySet1", "mySet2");
System.out.println("count:" + count);
Set<String> set3 = jedis.smembers("mySet3");
System.out.println("set3:" + set3);
// 从 myset1 中移除元素
jedis.srem("myset1", "element2");
System.out.println("set1:" + set1);
// Redis Java SortedSet 实例
// 向名为 mysortedset 的 SortedSet 中添加元素
jedis.zadd("mysortedset", 1.0, "element1");
jedis.zadd("mysortedset", 2.0, "element2");
jedis.zadd("mysortedset", 3.0, "element3");
// 获取 SortedSet 中的所有元素和分数
System.out.println("SortedSet 中的所有元素和分数: " + jedis.zrangeWithScores("mysortedset", 0, -1));
// 从 mysortedset 中移除元素
jedis.zrem("mysortedset", "element2");
// 获取更新后的 SortedSet 中的所有元素和分数
System.out.println("更新后的 SortedSet 中的所有元素和分数: " + jedis.zrangeWithScores("mysortedset", 0, -1));
// 最后,记得关闭Redis连接,释放资源,
jedis.close();
}
}