版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
1 打开 Redis
输入命令如下:
引入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
连接到 Redis
public static void main( String[] args ){
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
//查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping());
}
证明程序已经成功连接到 Redis
Redis 常用命令
对字符串的使用
public class App {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
//清空所有数据
jedis.flushDB();
//增加键值对
jedis.set("name", "哈姆");
//查询键值对
System.out.println(jedis.get("name"));
//删除键值对,返回值为1代表成功,0代表失败
System.out.println(jedis.del("name2"));
//设置多个键值对
jedis.mset("age","19","day","1999");
//判断某个key是否存在
System.out.println(jedis.exists("age"));
//获取系统中的所有键
Set<String> keys = jedis.keys("*");
Iterator<String> it = keys.iterator() ;
while(it.hasNext()){
String key = it.next();
System.out.print(key + " ");
}
System.out.println();
//设置键的过期时间,把name的过期时间设置为5秒
jedis.expire("name",5);
//查看某个key的剩余生存时间,永久生存或者不存在的都返回-1
System.out.println(jedis.ttl("name"));
}
}
测试结果如下:
哈姆
0
true
name day age
5
对哈希的使用
public class App {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
//清空所有数据
jedis.flushDB();
//在哈希表hash中增加键值对
jedis.hset("hash","key01","value01");
jedis.hset("hash","key02","value02");
//查询哈希表hash中的所有值
System.out.println(jedis.hvals("hash"));
//删除哈希表hash中的键值对
jedis.hdel("hash","key01");
//在哈希表hash中增加整形键值对,注意若该语句一直执行其value会累加
jedis.hincrBy("hash","key03",100);
//查询哈希表hash的key是否存在
System.out.println(jedis.hexists("hash","key03"));
//获取哈希表hash中key对应的value
System.out.println(jedis.hget("hash","key03"));
}
}
测试结果如下:
[value01, value02]
true
100
对列表的使用
public class App {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
//清空所有数据
jedis.flushDB();
//向列表中增加数据
jedis.lpush("list", "v01");
jedis.lpush("list", "v02");
jedis.lpush("list", "v03");
jedis.lpush("list", "v04");
jedis.lpush("list", "v05");
//查询列表中的元素,0表示列表的第一个元素,-1表示列表的最后一个元素
System.out.println(jedis.lrange("list", 0, -1));
//删除元素,第二个参数为删除的个数(有重复时),后增加的先被删除
jedis.lrem("list", 1, "v02");
//修改列表中指定的值
jedis.lset("list",0,"v00");
//查询列表长度
System.out.println(jedis.llen("list"));
}
}
测试结果如下:
[v05, v04, v03, v02, v01]
4
对集合的使用
public class App {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
//清空所有数据
jedis.flushDB();
//向集合增加数据
jedis.sadd("set","小明","老王");
jedis.sadd("set","读卡兰");
//获取集合的成员数
System.out.println(jedis.scard("set"));
//返回集合中的所有成员,注意顺序是无序的
System.out.println(jedis.smembers("set"));
//删除集合中的数据
jedis.srem("set","小明");
//查询集合中是否存在某数据
System.out.println(jedis.sismember("set","读卡兰"));
jedis.sadd("set1", "老王","dul");
//求交集
System.out.println(jedis.sinter("set","set1"));
//求并集
System.out.println(jedis.sunion("set","set1"));
//求差集
System.out.println(jedis.sdiff("set","set1"));
}
}
测试结果如下:
3
[读卡兰, 老王, 小明]
true
[老王]
[读卡兰, dul, 老王]
[读卡兰]
对有序集合的使用
注意,Redis 中有序集合和集合一样也是字符串类型元素的集合,且不允许重复的成员。但是每个元素都会关联一个 double 类型的分数,在 Redis 中通过分数对每个成员进行从小到大的排序。有序集合中成员唯一,但分数可以重复。
public class App {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost");
//清空所有数据
jedis.flushDB();
//增加数据
jedis.zadd("zset",1,"v01");
jedis.zadd("zset",2,"v02");
jedis.zadd("zset",7,"v03");
jedis.zadd("zset",2.5,"v04");
//查询有序集合中的元素,按照权重从小到大进行排序
System.out.println(jedis.zrange("zset",0,-1));
//删除有序集合中的元素
System.out.println(jedis.zrem("zset", "v02"));
//查询有序集合中元素的个数
System.out.println(jedis.zcard("zset"));
//查询有序集合中元素权重在某个区间的个数
System.out.println(jedis.zcount("zset", 1, 3));
//查询有序集合中某个元素的权重
System.out.println(jedis.zscore("zset", "v04"));
//查询有序集合中下标范围内的元素值
System.out.println(jedis.zrange("zset", 0, 1));
}
}
测试结果如下:
[v01, v02, v04, v03]
1
3
2
2.5
[v01, v04]