redis是一种非关系型数据库(NoSQL),内存数据库
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
下面我们再代码中简单写一下它们的基本用法
1.string类型的用法
public static void testString(){
//获得资源
Jedis jedis = new Jedis("localhost",6379);//默认端口号6379
System.out.println("运行:"+jedis.ping());
//清空
jedis.del("name");
//赋值
jedis.set("name","luck");
//取值
String name=jedis.get("name");
System.out.println(name);
jedis.del("name");//删除
}
结果:
运行:PONG
luck
2.hash类型的用法
public static void testHash() {
//获得资源
Jedis jedis = new Jedis("localhost",6379);
System.out.println("运行:"+jedis.ping());
jedis.del("info");
Map<String,String> map=new HashMap<String, String>();
map.put("A","好");
map.put("B","中");
map.put("C","差");
//map添加到redis中
jedis.hmset("info",map);
System.out.println(jedis.hmget("info","A","B","C"));
// 返回key=info的值的个数
System.out.println("个数:"+jedis.hlen("info"));
// 判断是否存在key=info的对象
System.out.println(jedis.exists("info是否存在:"+"info"));
// 返回map对象中的所有key值
System.out.println("keys:"+jedis.hkeys("info"));
// 返回map对象中的所有value值
System.out.println(jedis.hvals("info"));
// 循环迭代key
Iterator<String> iterator=jedis.hkeys("info").iterator();
while(iterator.hasNext()){
String key=iterator.next();
System.out.println(key+"=>"+jedis.hmget("info",key));
}
//删除数据
jedis.del("info");
System.out.println(jedis.exists("info"));
// 关闭资源
jedis.close();
}
结果:
运行:PONG
[好, 中, 差]
个数:3
false
keys:[A, B, C]
[中, 好, 差]
A=>[好]
B=>[中]
C=>[差]
false
3.list类型的用法
public static void tsetList(){
//获得资源
Jedis jedis = new Jedis("localhost",6379);
System.out.println("运行:"+jedis.ping());
jedis.del("baidu");
// Redis Lpush 命令将一个或多个值插入到列表头部。
// 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
// 当 key 存在但不是列表类型时,返回一个错误。
jedis.lpush("baidu","www.baidu.com");
jedis.lpush("baidu","李彦宏");
jedis.lpush("baidu","China");
//Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。
// 其中 0 表示列表的第一个元素,1 表示列表的第二个元素,以此类推。
// 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
System.out.println(jedis.lrange("baidu",0,2));
jedis.lpush("baidu","搜索引擎","无人驾驶");
System.out.println(jedis.lrange("baidu",0,4));
//列表中下标为指定索引值的元素。 如果指定索引值不在列表的区间范围内,返回 null 。
System.out.println(jedis.lindex("baidu",3));
// 关闭资源
jedis.close();
}
结果:
运行:PONG
[China, 李彦宏, www.baidu.com]
[无人驾驶, 搜索引擎, China, 李彦宏, www.baidu.com]
李彦宏
4.set类型的用法
public static void testSet() {
//获得资源
Jedis jedis = new Jedis("localhost",6379);
System.out.println("运行:"+jedis.ping());
jedis.del("animals");
//存放数据
jedis.sadd("animals","大脑斧","长颈鹿","大熊猫");
// 查看
jedis.smembers("animals");
System.out.println(jedis.smembers("animals"));
// 删除元素
jedis.srem("animals","长颈鹿");
System.out.println(jedis.smembers("animals"));
// 判断值是否存在
jedis.sismember("animals","长颈鹿");
System.out.println(jedis.sismember("animals","长颈鹿"));
//返回集合的个数
jedis.scard("animals");
System.out.println(jedis.scard("animals"));
// 返回随机元素
System.out.println("返回随机元素:"+jedis.srandmember("animals"));
// 关闭资源
jedis.close();
}
结果:
运行:PONG
[大熊猫, 长颈鹿, 大脑斧]
[大熊猫, 大脑斧]
false
2
返回随机元素:大熊猫
5.sorted set类型的用法
public static void testSort() {//sorted有序集合
//获得资源
Jedis jedis = new Jedis("localhost",6379);
System.out.println("运行:"+jedis.ping());
//清空
jedis.del("sort");
// 添加元素
jedis.rpush("sort", "1");
jedis.rpush("sort","55","66");
jedis.lpush("sort", "12");
jedis.lpush("sort", "30");
System.out.println(jedis.lrange("sort",0,4));
// 排序
System.out.println("排序:" + jedis.sort("sort"));
// 关闭资源
jedis.close();
}
结果:
运行:PONG
[30, 12, 1, 55, 66]
排序:[1, 12, 30, 55, 66]