赞
踩
如果项目为maven项目,要添加Redis需要使用的包,下面是pom.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.hyx</groupId> <artifactId>test</artifactId> <version>1.0-SNAPSHOT</version> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.7</maven.compiler.source> <maven.compiler.target>1.7</maven.compiler.target> </properties> <dependencies> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.10.2</version> <type>jar</type> <scope>compile</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>5.3.1</version> <scope>compile</scope> </dependency> </dependencies> <build> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.0.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.20.1</version> </plugin> <plugin> <artifactId>maven-jar-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build> </project>
redis.maxTotal=100
redis.maxIdle=30
redis.minIdle=10
redis.url=主机名
redis.port=6379
import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.io.IOException; import java.io.InputStream; import java.util.Properties; public class JedisPoolUtil { private static JedisPool pool = null; static { //加载配置文件 InputStream in = JedisPoolUtil.class.getClassLoader().getResourceAsStream("redis.properties"); Properties pro = new Properties(); try { pro.load(in); } catch (IOException e) { e.printStackTrace(); System.out.println("加载文件失败"); } JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(Integer.parseInt( pro.get("redis.maxTotal").toString())); poolConfig.setMaxIdle(Integer.parseInt( pro.get("redis.maxIdle").toString())); poolConfig.setMinIdle(Integer.parseInt( pro.get("redis.minIdle").toString())); pool = new JedisPool(poolConfig, pro.get("redis.url").toString(),Integer.parseInt( pro.get("redis.port") .toString())); } public static Jedis getJedis(){ return pool.getResource(); } public static void release(Jedis jedis){ if(null != jedis){ jedis.close(); } } }
import org.junit.jupiter.api.Test; import uilts.JedisPoolUtil; import redis.clients.jedis.Jedis; public class StringDemo { private static Jedis jedis = JedisPoolUtil.getJedis(); //添加和获取 @Test public void fun1(){ jedis.set( "num","1" ); System.out.println(jedis.get( "num" )); } //删除 @Test public void fun2(){ jedis.del( "num" ); System.out.println(jedis.get( "num" )); } //自增和自减 @Test public void fun3(){ jedis.set( "num","1" ); jedis.decr( "num" ); //i-- System.out.println(jedis.get( "num" )); jedis.incr( "num" );//i++ } //自增和自减 一个数 @Test public void fun4(){ jedis.set( "num","1" ); jedis.decrBy( "num" ,5); //i=i-5 System.out.println(jedis.get( "num" )); jedis.incrBy( "num",10 );//i= i+10; System.out.println(jedis.get( "num" )); } //字符串拼接 @Test public void fun5(){ jedis.set( "name","yx" ); Long append = jedis.append( "name", "h" ); //返回长度 System.out.println(append); System.out.println(jedis.get( "name" ));//feisong } }
import org.junit.jupiter.api.Test; import redis.clients.jedis.Jedis; import uilts.JedisPoolUtil; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; //Hash操作和JavaMap是一样 public class HashDemo { private static Jedis jedis = JedisPoolUtil.getJedis(); //存储和获取 @Test public void fun1(){ Long aLong = jedis.hset( "user", "uname", "sun"); System.out.println(aLong); Long bLong = jedis.hset( "user", "age", "18" ); System.out.println(bLong); String uname = jedis.hget( "user", "uname" ); System.out.println(uname); } //一次性存储多个key @Test public void fun2(){ HashMap<String, String> user = new HashMap<>(); user.put( "name","zs" ); user.put( "age","88" ); jedis.hmset( "user1",user ); } //一次性或所有值 @Test public void fun3(){ Map<String, String> user1 = jedis.hgetAll( "user1" ); System.out.println(user1); } //删除、增长,判定是否存储,获取键值对个数 @Test public void fun4(){ Long hdel = jedis.hdel( "user1", "name" ); jedis.hincrBy( "user1","age",10 ); jedis.hexists( "user1","age" ); Long hlen = jedis.hlen( "user1" ); System.out.println(hdel); } //获取所有Keys、value @Test public void fun5(){ Set<String> keys = jedis.hkeys( "user" ); List<String> valus = jedis.hvals( "user" ); System.out.println(keys); System.out.println(valus); } }
import org.junit.jupiter.api.Test; import redis.clients.jedis.BinaryClient; import redis.clients.jedis.Jedis; import uilts.JedisPoolUtil; import java.util.List; public class ListTest { public static Jedis jedis = JedisPoolUtil.getJedis(); // lpush头部添加 // rpush尾部添加 @Test public void fun1(){ jedis.lpush("mylist","list00","list01","list02"); jedis.rpush("mylist","list00","list01","list02"); } @Test // 查看列表 参数 名字 start end -1代表最后一个元素 -2倒数第二个 public void fun2(){ List<String> mylist = jedis.lrange("mylist", 0, -1); System.out.println(mylist); } //查看第一个 @Test public void fun3(){ String ltop = jedis.lpop("mylist"); System.out.println(ltop); } //查看最后一个 @Test public void fun4(){ String llast = jedis.rpop("mylist"); System.out.println(llast); } @Test //判断有没有存在的键有就插入没有就不插入,不会创建 public void fun5(){ List<String> mylist = jedis.lrange("mylist", 0, -1); System.out.println(mylist); Long num = jedis.lpushx("mylist", "1"); mylist = jedis.lrange("mylist1", 0, -1); System.out.println(num); System.out.println(mylist); } @Test // 移除元素返回移除的个数>0从前往后删除 <0从后往前删除 //返回删除元素个数 public void fun6(){ Long num = jedis.lrem("mylist", 5, "list00"); System.out.println(num); } @Test // 设置值 public void fun7(){ jedis.lset("mylist",2,"abasdfasdf"); List<String> mylist = jedis.lrange("mylist", 0, -1); System.out.println(mylist); } @Test // 在中间插入值 如果该值不存在则返回-1 // 如果存在返回这个list的长度 public void fun8(){ Long num = jedis.linsert("mylist", BinaryClient.LIST_POSITION.BEFORE, "123", "list01" ); System.out.println(num); jedis.lset("mylist",3,"abasdfasdf"); List<String> mylist = jedis.lrange("mylist", 0, -1); System.out.println(mylist); } @Test // 在第一个列表尾巴中弹出,在第二个列表中压入头 /* * 使用场景,这样做可以保证原有数据的安全性,如果 * 从第一个列表中拆出来,直接释放掉那么一旦发生了异常 * 数据就不能回复了,我们还可以加上一个守护进程,更加确保 * 数据的安全性 * */ public void fun9(){ String rpoplpush = jedis.rpoplpush("mylist", "mylist1"); List<String> mylist = jedis.lrange("mylist", 0, -1); System.out.println(mylist); List<String> mylist1 = jedis.lrange("mylist1", 0, -1); System.out.println(mylist1); System.out.println(rpoplpush); } }
import org.junit.jupiter.api.Test; import redis.clients.jedis.Jedis; import uilts.JedisPoolUtil; import java.util.Set; public class SetTest { public static Jedis jedis = JedisPoolUtil.getJedis(); @Test /*添加元素删除元素*/ public void fun(){ Long sadd = jedis.sadd("myset", "set1", "set3", "set2","5","set6"); System.out.println(sadd); Long set1 = jedis.srem("myset","set1"); System.out.println(set1); } @Test /*获得元素*/ public void fun1(){ Set<String> myset = jedis.smembers("myset"); System.out.println(myset); } @Test /*移除元素*/ public void fun2(){ Long set1 = jedis.srem("myset","set1"); System.out.println(set1); } @Test //判断是否这个set中存在某个值 public void fun3(){ Boolean sismember = jedis.sismember("myset", "set2"); System.out.println(sismember); } @Test //获得A-B 获得差集合 public void fun4(){ Set<String> sdiff = jedis.sdiff("myset", "myadd"); System.out.println(sdiff); } @Test //获得交集 public void fun5(){ Set<String> sinter = jedis.sinter("myset", "myadd"); System.out.println(sinter); } @Test // 获得并集合 public void fun6(){ Set<String> sunion = jedis.sunion("myset", "myadd"); System.out.println(sunion); } @Test // 成员数量 public void fun7(){ Set<String> smenmber = jedis.smembers("myset"); System.out.println("smenmber="+smenmber); } @Test // 获得随机的一个成员 public void fun8(){ String srandmember = jedis.srandmember("myset"); System.out.println("srandmember= "+srandmember); } @Test // 将相差的成员放到一个新的set中同理交集和并集都可以后面均 // 加上一个store即可 // 并返回新的长度 public void fun9(){ Set<String> sdiff = jedis.sdiff("myset", "myadd"); for(String s :sdiff){ Long sadd = jedis.sadd("newset", s); System.out.println(sadd); } Set<String> newset = jedis.smembers("newset"); System.out.println(newset.size()); } }
import org.junit.Assert; import org.junit.jupiter.api.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.Pipeline; import redis.clients.jedis.ScanResult; import redis.clients.jedis.Tuple; import uilts.JedisPoolUtil; import java.util.HashMap; import java.util.Map; import java.util.Set; /* 和set极为的类似,他们是字符串的集合,没有重复的数据 差别是sortedset每个成员中都会有一个分数(score)与之关联 ,redis正是通过分数来为集合中的成员进行从小到大的排序 sortedset中数据必须单一但是他的score可以是重复的 */ public class SortedsetTest { public static Jedis jedis = JedisPoolUtil.getJedis(); // 添加元素 @Test public void fun(){ Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<=10;i++){ map.put("value:"+i,Double.valueOf(i)); //覆盖了上面的赋值 } jedis.zadd("sortedSet",map); //返回共有多少元素 Long sortedSet = jedis.zcard("sortedSet"); //返回指定区域元素 Long sortedSet1 = jedis.zcount("sortedSet", 2, 6); //返回指定区域所有键与值 Set<String> sortedSet2 = jedis.zrange("sortedSet", 0l, 10l); System.out.println(sortedSet); System.out.println(sortedSet1); System.out.println(sortedSet2); } @Test public void testZAddAndZCardAndZScore(){ //zadd 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。 //zcard 返回有序集 key 的基数。 //zscore 返回有序集 key 中,成员 member 的 score 值。 jedis.zadd("sortedSet",1111,"value:10"); Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<=10;i++){ map.put("value:"+i,Double.valueOf(i)); //覆盖了上面的赋值 } jedis.zadd("sortedSet",map); Assert.assertTrue(jedis.zscore("sortedSet","value:10")==10); Assert.assertTrue(jedis.zcard("sortedSet")==11); Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZCount(){ //zcount 返回有序集 key 中, score 值在 min 和 max 之间(默认包括 score 值等于 min 或 max )的成员的数量。 Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i)); } jedis.zadd("sortedSet",map); Long count = jedis.zcount("sortedSet",0,9); System.out.println(count); Assert.assertTrue(count==10); Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZincrby(){ //zincrby 为有序集 key 的成员 member 的 score 值加上增量 increment 。 jedis.zadd("sortedSet",1111,"value:10"); jedis.zincrby("sortedSet",-111.1,"value:10"); Assert.assertTrue(jedis.zscore("sortedSet","value:10")==999.9); Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZRangeAndZRevRange(){ /** zrange * 返回有序集 key 中,指定区间内的成员。 其中成员的位置按 score 值递增(从小到大)来排序。 rev则相反 具有相同 score 值的成员按字典序(lexicographical order )来排列。 */ Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Math.random()*100); } jedis.zadd("sortedSet",map); Set<String> set = jedis.zrange("sortedSet",0,-1); //递增 Set<String> revSet = jedis.zrevrange("sortedSet",0,-1); //递减 for(String ss:set){ System.out.println(ss+":"+jedis.zscore("sortedSet",ss)); } System.out.println("rev----------"); for(String ss:revSet){ System.out.println(ss+":"+jedis.zscore("sortedSet",ss)); } Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZRangeByScoreAndZRevRangeByScore(){ //返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 //有序集成员按 score 值递增(从小到大)次序排列。 rev递减 Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Math.random()*100); } jedis.zadd("sortedSet",map); Set<String> set = jedis.zrangeByScore("sortedSet",25,75); Set<String> revSet = jedis.zrevrangeByScore("sortedSet",75,25); for(String ss:set){ System.out.println(ss+":"+jedis.zscore("sortedSet",ss)); } System.out.println("rev----------"); for(String ss:revSet){ System.out.println(ss+":"+jedis.zscore("sortedSet",ss)); } Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZRankAndZRevRank(){ //zrank 返回有序集 key 中成员 member 的排名。其中有序集成员按 score 值递增(从小到大)顺序排列。从0开始,rev表示从大到小 Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i)); } jedis.zadd("sortedSet",map); Assert.assertTrue(jedis.zrank("sortedSet","value:5")==5); Assert.assertTrue(jedis.zrevrank("sortedSet","value:5")==4); Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZRem(){ //zrem 移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。 Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i)); } jedis.zadd("sortedSet",map); Assert.assertTrue(jedis.zrem("sortedSet","value:0","value:1","dertcfghvjbk")==2); Assert.assertTrue(jedis.zcard("sortedSet")==8); Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZRemRangeByRank(){ //zremrangeByRank 移除有序集 key 中,指定排名(rank)区间内的所有成员。 Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i)); } jedis.zadd("sortedSet",map); jedis.zremrangeByRank("sortedSet",1,3); Assert.assertTrue(jedis.zcard("sortedSet")==7); Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZRemRangeByScore(){ //zremrangeByScore 移除有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。 Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i)); } jedis.zadd("sortedSet",map); jedis.zremrangeByScore("sortedSet",1,3); Assert.assertTrue(jedis.zcard("sortedSet")==7); Assert.assertTrue(jedis.del("sortedSet")==1); } @Test public void testZUnionStore(){ //计算给定的一个或多个有序集的并集,其中给定 key 的数量必须以 numkeys 参数指定,并将该并集(结果集)储存到 destination 。 Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i)); } jedis.zadd("keya",map); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i+3)); } map.put("adsad",123d); jedis.zadd("keyb",map); jedis.zunionstore("destination","keya","keyb"); Assert.assertTrue(jedis.zcard("destination")==11); Assert.assertTrue(jedis.del("keya","keyb","destination")==3); } @Test public void testZInterStore(){ //计算给定的一个或多个有序集的交集,其中给定 key 的数量必须以 numkeys 参数指定,并将该交集(结果集)储存到 destination Map<String,Double> map = new HashMap<String,Double>(); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i)); //覆盖了上面的赋值 } jedis.zadd("keya",map); for(int i=0;i<10;i++){ map.put("value:"+i,Double.valueOf(i+3)); //覆盖了上面的赋值 } map.put("adsad",123d); jedis.zadd("keyb",map); jedis.zinterstore("destination","keya","keyb"); Assert.assertTrue(jedis.zcard("destination")==10); Assert.assertTrue(jedis.del("keya","keyb","destination")==3); Assert.assertTrue(jedis.del("keya","keyb","destination")==3); } @Test public void testZRangeByLex(){ //当有序集合的所有成员都具有相同的分值时, 有序集合的元素会根据成员的字典序(lexicographical ordering)来进行排序, // 而这个命令则可以返回给定的有序集合键 key 中, 值介于 min 和 max 之间的成员。 jedis.zadd("中文",123d,"a"); jedis.zadd("中文",123d,"b"); jedis.zadd("中文",123d,"c"); jedis.zadd("中文",123d,"d"); jedis.zadd("中文",123d,"e"); Set<String> set = jedis.zrangeByLex("中文","(b","[e"); // Set<String> set = jedis.zrangeByLex("中文","-","+"); // System.out.println(set.toString()); Assert.assertTrue(set.size()==3); Assert.assertTrue(jedis.del("中文")==1); } @Test public void testZLexCount(){ //对于一个所有成员的分值都相同的有序集合键 key 来说, 这个命令会返回该集合中, 成员介于 min 和 max 范围内的元素数量。 jedis.zadd("key",123d,"a"); jedis.zadd("key",123d,"b"); jedis.zadd("key",123d,"c"); jedis.zadd("key",123d,"d"); jedis.zadd("key",123d,"e"); Assert.assertTrue(jedis.zlexcount("key","-","+")==5); Assert.assertTrue(jedis.zlexcount("key","(b","[e")==3); Assert.assertTrue(jedis.del("key")==1); } @Test public void testZRemRangeByLex(){ //对于一个所有成员的分值都相同的有序集合键 key 来说, 这个命令会移除该集合中, 成员介于 min 和 max 范围内的所有元素。 jedis.zadd("key",123d,"a"); jedis.zadd("key",123d,"b"); jedis.zadd("key",123d,"c"); jedis.zadd("key",123d,"d"); jedis.zadd("key",123d,"e"); Assert.assertTrue(jedis.zremrangeByLex("key","(b","[e")==3); Assert.assertTrue(jedis.zlexcount("key","-","+")==2); } @Test public void testZScan(){ Pipeline pipeline = jedis.pipelined(); for(int i=0;i<1000;i++){ pipeline.zadd("key",Math.random()*100,"value:"+i); } pipeline.sync(); int cursor = 0; int count = 0; do{ ScanResult<Tuple> result = jedis.zscan("key",cursor); cursor = Integer.valueOf(result.getStringCursor()); for(Tuple tuple :result.getResult()){ // System.out.print(new String(tuple.getBinaryElement())+":"+tuple.getScore()); count++; } } while (cursor!=0); System.out.println(count); } }
sort代码出处https://blog.csdn.net/a1031397017/article/details/69484193
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。