开始在 Java 中使用 Redis 前, 首先需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。安装配置Redis:
maven配置如下
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
使用Jedis连接并测试
import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.*;
/**
* @author: dx
* @date:2019-03-26
*/
public class RedisJava {
private static Jedis jedis;
static {
// 连接本地redis服务
jedis = new Jedis("localhost");
}
// Redis Java String(字符串) 实例
@Test
public void testString(){
// 设置redis字符串数据
jedis.set("top", "this is test on redis ...");
jedis.set("name", "lw");
// 获取存储数据并输出
System.out.printf("top 的数据为: %s\n", jedis.get("top"));
System.out.printf("name 的数据为: %s\n", jedis.get("name"));
// 追加字符
jedis.append("name", " 这是我的英文名字缩写!");
System.out.println("name >> " + jedis.get("name"));
// 删除键
Long result = jedis.del("top");
System.out.println(result > 0 ? "删除 top 成功!" : "删除 top 失败!"); // 1表示成功, 0表示失败。
// 设置多个键值对
jedis.mset("age", "13", "addr", "上海市");
System.out.println(jedis.mget("name", "age", "addr"));
}
// Redis Java List(列表) 实例
@Test
public void testList(){
// 存储数据到redis的list中
jedis.lpush("c-list", "china");
jedis.lpush("c-list", "Google");
jedis.lpush("c-list", "Taobao");
// 获取数据并遍历输出
//你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
List<String> list = jedis.lrange("c-list",0, -1);
for (String clist : list) {
System.out.printf("list in redis name c-list: %s\n", clist);
}
// lpushx key value 将一个值插入到已存在的列表头部
jedis.lpushx("c-list", "tongren");
System.out.println(jedis.lrange("c-list", 0, -1));
//rpush key value1 [value2] 在列表中添加一个或多个值
jedis.rpush("c-list", "lw", "dx");
System.out.println(jedis.lrange("c-list", 0, -1));
}
// Redis java Set
@Test
public void testSet() {
// 获取数据并输出
Set<String> keys = jedis.keys("*");
Iterator<String> it = keys.iterator();
while (it.hasNext()) {
String key = it.next();
System.out.println(key);
}
//向集合添加一个或多个成员
jedis.sadd("webSite", "阿里巴巴", "腾讯");
jedis.sadd("webSite", "网易");
//SCARD key 获取集合的成员数
System.out.println(jedis.scard("webSite"));
//SMEMBERS key 返回集合中的所有成员 返回类型列表[阿里巴巴, 腾讯, 网易]注意顺序不唯一
System.out.println(jedis.smembers("webSite"));
//SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素
System.out.println(jedis.sscan("webSite", 0));
}
// Redis java Hash
@Test
public void testHash() {
Map<String, String> map = new HashMap<>();
map.put("name", "lw");
map.put("age", "22");
// hmset 将 map 存入redis中
jedis.hmset("user", map);
// hmget 读取map数据
System.out.println(jedis.hmget("user", "name", "age"));
// hkeys 读取 map 中的所有 keys
System.out.println(jedis.hkeys("user"));
// hvals 读取 map 中的所有 value
System.out.println(jedis.hvals("user"));
// hlen 获取 map 中的有多少个字段
System.out.println(jedis.hlen("user"));
//获取所有的键 迭代操作
Iterator<String> iterator = jedis.hkeys("user").iterator();
while(iterator.hasNext()){
String key = iterator.next();
System.out.println(key + " : " + jedis.hmget("user", key));
}
}
//sorted set有序Set
@Test
public void testSortSet() {
// Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
// 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
// 有序集合的成员是唯一的,但分数(score)却可以重复。
jedis.zadd("city", 0, "北京");
jedis.zadd("city", 1, "上海");
jedis.zadd("city", 1, "上海2");
jedis.zadd("city", 2, "杭州");
//ZCARD key 获取有序集合的成员数
System.out.println( jedis.zcard("city") );
//ZREVRANK key member 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 java中的方法是zrevrangeByScore
//2指的是最大的分数
Set<String> a = jedis.zrevrangeByScore("city", 2, 0);
System.out.println( a );
}
}
View Code