Redis简介
Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
redis 可以实现对数据的高速存储和读取
接下来介绍对Redis中几种常用类型的操作:
string类型(1)增删操作
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(); } }
string类型(2)自增自减操作
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(); } }
string类型(3)对多个数据的存取操作
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(); } }
hash类型数据操作
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(); } }
list类型数据操作
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(); } }
set类型数据操作
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(); } }
zset类型数据操作
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(); } }
评论区