**Remote Dictionary Server(Redis)是一个开源的使用 ANSIhttps://baike.baidu.com/item/C%E8%AF%AD%E8%A8%80C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。 它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。** redis 可以实现对数据的高速存储和读取
接下来介绍对Redis中几种常用类型的操作:
package com.xmaven.test;
import redis.clients.jedis.Jedis;
public class TestString {
public static void main(String[] args) {
Jedis j = new Jedis("127.0.0.1",6379);
System.out.println("连接成功");
j.set("name", "张三"); //添加键值
System.out.println(j.get("name")); //根据键取值
j.append("name", " 你好"); //追加
System.out.println(j.get("name"));
j.del("name"); //删除
System.out.println(j.get("name"));
j.close();
}
}
package com.xmaven.test;
import redis.clients.jedis.Jedis;
public class TestString1 {
public static void main(String[] args) {
Jedis j = new Jedis("127.0.0.1",6379);
System.out.println("连接成功");
j.set("num", "1");
j.incr("num"); //值自增1
j.incrBy("num", 5); //值自增5
System.out.println(j.get("num"));
j.set("num", "1");
j.decr("num"); //值自减1
j.decrBy("num", 5); //值自减5
System.out.println(j.get("num"));
j.close();
}
}
package com.xmaven.test;
import java.util.List;
import redis.clients.jedis.Jedis;
public class TestString2 {
public static void main(String[] args) {
Jedis j = new Jedis("127.0.0.1",6379);
System.out.println("连接成功");
j.mset("name","zhangsan","sex","nan","age","21"); //一次存多个值
List<String> list = j.mget("name","sex","age"); //一次取多个值
for (String s : list) {
System.out.println(s);
}
j.close();
}
}
package com.xmaven.test;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class TestHash {
public static void main(String[] args) {
Jedis j = new Jedis("127.0.0.1",6379);
System.out.println("连接成功");
//存储数据
j.hset("stu", "name", "tom");
j.hset("stu", "sex", "male");
j.hset("stu", "age", "22");
//获取某个属性的数据
System.out.println(j.hget("stu", "name"));
//获取所有的key
Set<String> set = j.hkeys("stu");
for (String s : set) {
System.out.println(s);
}
System.out.println("========================");
//获取所有values
List<String> list = j.hvals("stu");
for (String s : list) {
System.out.println(s);
}
//删除指定值
j.hdel("stu", "name");
//指定值增加或减少
j.hincrBy("stu", "age", 5);
j.close();
}
}
package com.xmaven.test;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class TestList {
public static void main(String[] args) {
Jedis j = new Jedis("127.0.0.1",6379);
System.out.println("连接成功");
//存储数据(list)栈结构,从左侧先进的后出
j.lpush("score", "1","2","3","4");
String s1 = j.rpop("score");
System.out.println("从右删除了:"+s1);
System.out.println("还剩下:");
List<String> list = j.lrange("score", 0, -1);
for (String s : list) {
System.out.println(s);
}
System.out.println("============================");
//存储数据(list)栈结构,从右侧开始先进先出
j.rpush("price", "5","6","7","8");
String s2 = j.rpop("price");
System.out.println("从左删除了:"+s2);
System.out.println("还剩下:");
//第一个数字代表起始位置,第二个数字代表结束位置,-1 代表结束位置为结尾
List<String> list2 = j.lrange("price", 0, -1);
for (String s : list2) {
System.out.println(s);
}
j.close();
}
}
package com.xmaven.test;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class TestSet {
public static void main(String[] args) {
Jedis j = new Jedis("127.0.0.1",6379);
System.out.println("连接成功");
//set里面存储多个值
j.sadd("names", "tom","cat","dog","tiger");
//取出所有值
Set<String> set = j.smembers("names");
for (String s : set) {
System.out.println(s);
}
System.out.println("=======================");
//移除指定值,也可以是多个值
j.srem("names", "cat");
//判断是否存在某个值
Boolean ishas = j.sismember("names", "cat");
System.out.println(ishas ? "有":"没有");
j.close();
}
}
package com.xmaven.test;
import java.util.List;
import java.util.Set;
import redis.clients.jedis.Jedis;
public class TestZset {
public static void main(String[] args) {
Jedis j = new Jedis("127.0.0.1",6379);
System.out.println("连接成功");
//添加数据,第一个参数为键,第二个参数为分数用于排序使用,第三个参数为值
j.zadd("nums", 1,"a");
j.zadd("nums", 2,"b");
j.zadd("nums", 3,"c");
j.zadd("nums", 4,"d");
j.zadd("nums", 5,"1");
//正序输出
Set<String> set1 = j.zrange("nums", 0, -1);
for (String s : set1) {
System.out.println(s);
}
System.out.println("======================");
//逆序输出
Set<String> set2 = j.zrevrange("nums", 0, -1);
for (String s : set2) {
System.out.println(s);
}
System.out.println("======================");
//修改某个值的分数
j.zincrby("nums", -2, "1");//5-2=3
//获取里面元素的个数,类似于nums的长度
System.out.println(j.zcard("nums"));
//移除数据
j.zrem("nums", "d");
j.close();
}
}