一、 jedis的简介
jedis 是redis java连接工具 ,引入jar包后,就可以使用java代码操作redis。
二、redis修改远程可以连接
vim /usr/redis/bin/redis.conf
:69 bind 127.0.0.1
把当前redis实例和本机127.0.0.1进行绑定,只能本机客户端进行连接
如果想让其他任何机器进行访问该实例,需要把该实例与当前主机IP进行绑定
:69 bind 192.168.140.41
从新启动服务
使用客户端直接连接时出错
/usr/redis/bin/redis-server /usr/redis/bin/redis.conf
连接要换为连接IP地址:
/usr/redis/bin/redis-cli -h 192.168.140.41
2.2、 创建项目引入jar,编写代码
<!-- jedis包 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.2.2</version>
</dependency>
具体代码:
1、进行字符串操作
public class ConnectRedisTest {
public static void main(String[] args) {
// 查看源码 会看到使用host和post的构造
Jedis jedis = new Jedis("192.168.140.41", 6379);
// 测试是否可以联通
String pingResult = jedis.ping();
System.out.println("是否联通:"+pingResult);
if (!"PONG".equals(pingResult)){
System.out.println("联不通");
return;
}else {
System.out.println("可以联通");
}
// 查询
Set<String> keyList = jedis.keys("*");
System.out.println("已经存储的key为:");
for (String key : keyList) {
System.out.print(key+"\t");
}
System.out.println();
System.out.println("-----------------------------------------");
// 进行字符串操作
jedis.set("aaa","111");
String aaa = jedis.get("aaa");
System.out.println("redis存储的字符串为:"+jedis.get("aaa"));
// 添加多个元素
String mset = jedis.mset("bbb", "222", "ccc", "333", "ddd", "444");
System.out.println("====================================");
// 获取多个key的value值
List<String> values = jedis.mget("aaa", "bbb", "ccc", "ddd");
for (String value : values) {
System.out.print(value+"\t");
}
System.out.println("\n"+"==================================");
// 指定kay的value值递增
int i=0;
while (i<10){
long incr = jedis.incr(aaa);
System.out.print(incr+"\t");
i++;
}
System.out.println();
// 指定kay的value值递减
// while (i<10){
// long decr = jedis.decr(aaa);
// System.out.print(decr+"\t");
// i++;
// }
}
}
打印结果:
2、对 hashs 散列类型进行操作
// 单个存值
jedis.hset("mapTest","a","111");
// 单个取值
System.out.println("散列hashmap取值:"+jedis.hget("mapTest", "a"));
// 添加多个值
Map<String,String> hashMap = new HashMap<>();
hashMap.put("b","222");
hashMap.put("c","333");
hashMap.put("d","444");
jedis.hmset("mapTest", hashMap);
// 获取多个值
List<String> valuesMap = jedis.hmget("mapTest", "a", "b", "c", "d");
for (String value : valuesMap) {
System.out.print("散列hashmap取多值:"+value+"\t");
}
System.out.println();
// 获取key中多个filed属性值
Map<String, String> map = jedis.hgetAll("mapTest");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key为:"+entry.getKey()+"\tvalue为:"+entry.getValue());
}
// 获取key中的所有filed
Set<String> mapTest = jedis.hkeys("mapTest");
System.out.print("fields为:");
for (String s : map.keySet()) {
System.out.print(s+"\t");
}
// 获取key中的所有filed的value值
List<String> mapTest1 = jedis.hvals("mapTest");
System.out.println("\nvalue为");
for (String s : mapTest1) {
System.out.print(s+"\t");
}
// 获取key的长度
long mapTest2 = jedis.hlen("mapTest");
System.out.println("\nmapTest的长度为:"+mapTest2);
// 删除kay中的某个filed
long hdel = jedis.hdel("mapTest", "d");
打印结果:
3、 lists 列表类型的操作
// 进行list操作
String flushDB = jedis.flushDB();
// 添加元素
long lpush = jedis.lpush("listTest", "aa", "11", "bb", "22");
System.out.println("成功添加:"+lpush+"条数据");
System.out.print("遍历值为:");
for (long l = 0; l < jedis.llen("listTest"); l++) {
System.out.print("下标"+l+"的值为:"+jedis.lindex("listTest",l)+"\t");
}
// 在尾部添加元素
jedis.rpush("listTest","cc","33");
System.out.print("\n遍历值为:");
for (long l = 0; l < jedis.llen("listTest"); l++) {
System.out.print("下标"+l+"的值为:"+jedis.lindex("listTest",l)+"\t");
}
// 移除并返回key的第一个元素
String listTest = jedis.lpop("listTest");
System.out.println("\n删除第一个元素"+listTest);
// 移除并返回key的最后一个元素
String listTest1 = jedis.rpop("listTest");
System.out.println("删除最后一个元素"+listTest1);
// 获取key的长度
System.out.println("key的长度为:"+jedis.llen("listTest"));
打印结果:
4、sets 集合类型的操作
// 添加元素
long sadd = jedis.sadd("setTest", "aaa", "111", "bbb", "222");
System.out.println("添加 "+sadd+"条数据");
// 获取key中存储的所有元素值
Set<String> setTest = jedis.smembers("setTest");
System.out.print("储存的元素值为:");
for (String s : setTest) {
System.out.print(s+"\t");
}
// key中是否含有 value 有返回1 没有返回0
boolean sismember = jedis.sismember("setTest", "aaa");
System.out.println("\n是否含有该元素:"+sismember);
// 获取集合key的长度
System.out.println("setTest的长度为:"+jedis.scard("setTest"));
// 随机获取 key 中的 x 个元素
List<String> setTest1 = jedis.srandmember("setTest", 2);
System.out.println("随机获取2个元素:"+setTest1);
jedis.sadd("setTest2", "aaa", "333", "ccc", "222");
// 获取 key1 和 key2的共有元素
Set<String> sinter = jedis.sinter("setTest", "setTest2");
System.out.println("共有元素为:"+sinter);
// 返回 key2 与 key3 共有元素的个数 并储存在集合key1中
long sinterstore = jedis.sinterstore("setTest3", "setTest", "setTest2");
System.out.println("有几个共同元素:"+sinterstore);
System.out.println("setTest3存入的共同值:"+jedis.smembers("setTest3"));
// 移除 key 中的一个或多个成员元素,不存在的成员元素会被忽略
long srem = jedis.srem("setTest", "aaa", "fgfg");
System.out.println("移除了:"+srem);
// 移除 key 中的一个或多个随机元素,移除后会返回移除的元素
Set<String> setTest2 = jedis.spop("setTest2", 2);
System.out.println("随机移除2个元素"+setTest2);
打印结果:
5、sorted sets 有序集合类型
// 添加单条数据
long zadd = jedis.zadd("sortedSets", 11.1, "lisi");
System.out.println("成功添加"+zadd);
// 添加多条
Map<String,Double> map1 = new HashMap<>();
map1.put("zhangsan",22.2);
map1.put("zhaoliu",33.3);
map1.put("wangwu",44.4);
long sortedSets = jedis.zadd("sortedSets", map1);
System.out.println("成功添加多条:"+sortedSets);
// 返回 key 中是否含有元素并删除 有返回1 没有返回0
long zrem = jedis.zrem("sortedSets", "zhaoliu");
System.out.println("是否有这个元素:"+zrem);
// 返回 key 中元素个数
long sortedSets1 = jedis.zcard("sortedSets");
System.out.println("sortedSets中有"+sortedSets1+"个元素");
// 返回 key 中分数在 x--y 这个区间的元素个数
long sortedSets2 = jedis.zcount("sortedSets", 0, 60);
System.out.println("这个区间的元素个数为:"+sortedSets2);
// 返回 key 中 数字在 b--c 这个范围的元素
List<String> list = jedis.zrangeByScore("sortedSets", 0, 60);
System.out.println(list);
结果打印: