【Redis】在Java中以及Spring环境下操作Redis

【Redis】在Java中以及Spring环境下操作Redis

Java环境下:

1.创建maven 项目

2.导入依赖

 <!-- redis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>4.3.2</version> </dependency>

此处使用的是Jedis(提供的api和redis命令高度一致)

3.配置端口转发

防止Redis的端口被黑客攻击     将云服务器的redis端口映射到本地主机中

在xshell中配置:

 此时, 访问本地的 8888, 就相当于访问对应服务器的 6379

此时连接成功

一.基本命令:

 public static void test(Jedis jedis) { System.out.println("set 和 get 使用"); //清空数据库 jedis.flushAll(); jedis.set("key","k1"); jedis.set("key2","k2"); jedis.set("key3","k3"); String key = jedis.get("key"); String key2 = jedis.get("key2"); String key3 = jedis.get("key3"); System.out.println("key: " + key); System.out.println("key2: " + key2); System.out.println("key3: " + key3); System.out.println("exists 和 del 使用"); boolean result = jedis.exists("key"); System.out.println("result:" + result); result = jedis.exists("key1111"); System.out.println("result:" + result); long del = jedis.del("key", "key2"); result = jedis.exists("key"); System.out.println("result:" + result); System.out.println("keys 使用"); jedis.set("key","k1"); jedis.set("key2","k2"); Set<String> keys = jedis.keys("*"); System.out.println("keys: " + keys); System.out.println("expire 和 ttl 使用"); jedis.set("key4","k4"); jedis.expire("key4",10); //休眠5s try { Thread.sleep(5000); } catch (InterruptedException e) { throw new RuntimeException(e); } long ttl = jedis.ttl("key4"); System.out.println("ttl: " + ttl ); System.out.println("type 使用"); jedis.flushAll(); jedis.set("String", "1"); String type = jedis.type("String"); System.out.println("type: "+type); jedis.lpush("list","111","222","333"); type = jedis.type("list"); System.out.println("type: "+type); jedis.sadd("set","a","b","c"); type = jedis.type("set"); System.out.println("type: "+type); jedis.zadd("zset",1.0,"zhangsan"); type = jedis.type("zset"); System.out.println("type: "+type); jedis.hset("hash","f1 ","v1"); type = jedis.type("hash"); System.out.println("type: "+type); }

 String :

 public static void test(Jedis jedis) { //清空数据库 jedis.flushAll(); System.out.println("mset 和 mget 使用"); jedis.mset("k1","111","k2","222","k3","333"); List<String> mget = jedis.mget("k1", "k2", "k3","k4"); System.out.println("mget: " +mget); System.out.println("getrange 和 setrange 使用"); jedis.set("k4","abcdefgh"); String k4 = jedis.getrange("k4", 0, 4); System.out.println("result: " +k4); jedis.setrange("k4",0,"eeee"); System.out.println("k4: " +jedis.get("k4")); System.out.println("append 使用"); jedis.append("k4","aaaaaa"); System.out.println("k4: " + jedis.get("k4")); System.out.println("incr 和 decr 使用"); jedis.set("k5","111"); System.out.println( "k5: " + jedis.incr("k5")); System.out.println( "k5: " + jedis.decr("k5")); }

 

list使用:

 public static void test(Jedis jedis) { jedis.flushAll(); System.out.println("lpush 和 lrange 使用"); jedis.lpush("key","1","2","3","4","5"); System.out.println("key:" + jedis.lrange("key",0,-1)); System.out.println("rpuhs ,rpop, lpop 使用 "); jedis.rpush("key2","1","2","3","4","5"); System.out.println("key2 :" + jedis.lrange("key2",0,-1)); System.out.println("lpop key2:" + jedis.lpop("key2")); System.out.println("rpop key2:" + jedis.rpop("key2")); System.out.println("llen 使用"); System.out.println("len key2: " + jedis.llen("key2")); }

hash的使用:

 private static void test(Jedis jedis) { jedis.flushAll(); System.out.println("hset 和 hget 使用"); HashMap<String,String> hash = new HashMap<>(); hash.put("f2","v2"); hash.put("f3","v3"); hash.put("f4","v4"); jedis.hset("key",hash); jedis.hset("key","f1","v1"); System.out.println("key f1: " +jedis.hget("key", "f1")); System.out.println("key f5: " +jedis.hget("key", "f5")); System.out.println("hexists 使用"); Boolean result = jedis.hexists("key","f1"); System.out.println("key f1 result: " + result); result = jedis.hexists("key","f5"); System.out.println("key f5 result: " + result); System.out.println("hkeys 和 hvals 使用"); Set<String> hkeys = jedis.hkeys("key"); System.out.println("hkeys: " + hkeys); List<String> hvals = jedis.hvals("key"); System.out.println("hvals: " +hvals); System.out.println("hdel 使用"); jedis.hdel("key","f1"); result = jedis.hexists("key","f1"); System.out.println("key f1 result: " + result); System.out.println("hmset 和 hmget 使用"); List<String> hmget = jedis.hmget("key", "f1", "f2", "f3"); System.out.println("hmget key: " + hmget); }

set的使用:

 public static void test(Jedis jedis) { jedis.flushAll(); System.out.println("sadd 和 smembers 使用"); jedis.sadd("key","a","b","c","d"); Set<String> smembers = jedis.smembers("key"); System.out.println("key: " +smembers); System.out.println("sismember , scard , spop 使用"); boolean result = jedis.sismember("key", "a"); System.out.println("result: " + result); long len = jedis.scard("key"); System.out.println("key len: " +len); jedis.spop("key"); System.out.println("key len: " +jedis.scard("key")); System.out.println("sinter 和 sinterstore"); jedis.sadd("key2","1","2","3","4","5"); jedis.sadd("key3","3","4","5","6","7"); System.out.println("[key2 key3]sinter: "+ jedis.sinter("key2","key3")); long sinterstore = jedis.sinterstore("key4", "key2", "key3"); System.out.println("sinterstore: " + sinterstore); System.out.println("key4: " + jedis.smembers("key4")); }

zset的使用:

 public static void test(Jedis jedis) { jedis.flushAll(); System.out.println("zadd 和 zrange 使用"); jedis.zadd("key",10.0,"zhangsan"); Map<String ,Double> hash = new HashMap<>(); hash.put("lisi",20.0); hash.put("wangwu",30.0); jedis.zadd("key",hash); List<String> members = jedis.zrange("key", 0, -1); System.out.println("members: "+members); List<Tuple> key = jedis.zrangeWithScores("key", 0, -1); System.out.println("key: " + key); System.out.println("zcard , zscore 使用"); long len = jedis.zcard("key"); System.out.println("len key: " +len); Double score = jedis.zscore("key","zhangsan"); System.out.println("score: " + score); System.out.println("zrem , zrank 使用"); Long zrank = jedis.zrank("key", "lisi"); System.out.println("lisi rank: " + zrank); jedis.zrem("key","zhangsan"); System.out.println("lisi rank: " + jedis.zrank("key", "lisi")); }

 

都是一些基本操作,跟在redis操作基本一致,

Spring环境:

创建项目时勾选即可

通过注入的方法拿到StringRedisTemplate操作Redis 相当于刚才的Jedis

 

 将操作Redis的方法分成几个类别,好进一步更好的组织

大体命令基本一致 

Read more

极致性能的服务器Redis之Hash类型及相关指令介绍

极致性能的服务器Redis之Hash类型及相关指令介绍

目录 1. Hash介绍 2. hset 3. hget 3. hdel 5. hkeys 6. hvals 编辑 7. hgetall  8. hexists 9. hmget 10. hlen 11. hsetnx 12. hincrby 13. hincrbyfloat 1. Hash介绍 Redis 哈希类型是键值对的集合,字段与值均支持字符串、数字等类型,适合建模用户信息、配置项等对象类数据。其支持单字段 / 多字段的增删改查、字段存在性判断、值自增自减等原子操作,且底层通过压缩列表或哈希表优化存储,空间利用率高、查询效率快,是 Redis 中存储结构化数据的核心类型之一。 在Redis中因为本身就是按照哈希的KV结构来进行存储的,所以当我们想要使用Redis里面的哈希的时候,实际上是哈希的哈希,在后者中,

By Ne0inhk
《算法题讲解指南:优选算法-二分查找》--21.山峰数组的的峰顶索引,22.寻找峰值

《算法题讲解指南:优选算法-二分查找》--21.山峰数组的的峰顶索引,22.寻找峰值

🔥小叶-duck:个人主页 ❄️个人专栏:《Data-Structure-Learning》 《C++入门到进阶&自我学习过程记录》《算法题讲解指南》--从优选到贪心 ✨未择之路,不须回头 已择之路,纵是荆棘遍野,亦作花海遨游 目录 21. 山峰数组的的峰顶索引 题目链接: 题目描述: 题目示例: 解法(二分查找): 算法思路: C++算法代码: 算法总结及流程解析: 22. 寻找峰值 题目链接: 题目描述: 题目示例: 解法(二分查找): 算法思路: C++算法代码: 算法总结及流程解析: 结束语 21. 山峰数组的的峰顶索引 题目链接: 852. 山脉数组的峰顶索引 - 力扣(LeetCode) 题目描述: 题目示例: 解法(

By Ne0inhk
【组合数学 动态规划】P6870 [COCI2019-2020#5] Zapina|普及+

【组合数学 动态规划】P6870 [COCI2019-2020#5] Zapina|普及+

本文涉及知识点 组合数学汇总 C++动态规划 [COCI2019-2020#5] Zapina 题目描述 有 n n n 个不同的人和 n n n 道不同的题。 第 i i i 个人开心当且仅当他被分配到 i i i 道题,题号不限。 求让至少一个人开心的分配方案数。 输入格式 一个正整数: n n n。 输出格式 一个数字:你的答案 m o d 10 9 + 7 \bmod 10^9+7 mod109+7。 样例 #1

By Ne0inhk
蓝桥杯算法总结

蓝桥杯算法总结

序章 现处于大学生阶段,蓝桥杯算法竞赛算是我们的入门级竞赛,所以我们必须重视起来。 在这个算法总结中,我会用通俗易懂的语言,细致地讲述相关算法,希望能通过我的笔记,为大家带来一些帮助。 内容持续更新,坚持日更! 有任何想法可以在评论区提出,感谢观看。 递推和递归 递推 先简单介绍一下 递推算法:自底向上,由已知条件推导出位置结果的一种算法 核心:状态转移    边界+关系式 废话不多说,直接从题目入手理解递推思想 在这里选用信息学奥赛一本通的题:https://ybt.ssoier.cn/problem_show.php?pid=1314 题目意思理解: 从A点到B点的路径数,并且经过马能到达的点都无效,我们先做好前期的工作准备 //马走日,移动的位置(马能到达的点) int mx[] = {-1,-1,-2,-2,1,1,

By Ne0inhk