Java连接redis和redis基本命令

左手的ㄟ右手 2021-09-24 10:46 402阅读 0赞
  1. redis-server.exe redis.windows.conf

按配置启动redis服务

  1. redis-cli.exe -h 127.0.0.1 -p 6379

启动redis客户端

  1. set myKey abc get myKey del mykey

设置键值对key->value ,mykey->abc,获取键值,删除键

设置hash数据

  1. redis 127.0.0.1:6379> DEL runoob
  2. redis 127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
  3. "OK"
  4. redis 127.0.0.1:6379> HGET runoob field1
  5. "Hello"
  6. redis 127.0.0.1:6379> HGET runoob field2
  7. "World"

设置list数据

  1. redis 127.0.0.1:6379> DEL runoob
  2. redis 127.0.0.1:6379> lpush runoob redis
  3. (integer) 1
  4. redis 127.0.0.1:6379> lpush runoob mongodb
  5. (integer) 2
  6. redis 127.0.0.1:6379> lpush runoob rabitmq
  7. (integer) 3
  8. redis 127.0.0.1:6379> lrange runoob 0 10
  9. 1) "rabitmq"
  10. 2) "mongodb"
  11. 3) "redis"
  12. redis 127.0.0.1:6379>

Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的。

  1. redis 127.0.0.1:6379> DEL runoob
  2. redis 127.0.0.1:6379> sadd runoob redis
  3. (integer) 1
  4. redis 127.0.0.1:6379> sadd runoob mongodb
  5. (integer) 1
  6. redis 127.0.0.1:6379> sadd runoob rabitmq
  7. (integer) 1
  8. redis 127.0.0.1:6379> sadd runoob rabitmq
  9. (integer) 0
  10. redis 127.0.0.1:6379> smembers runoob
  11. 1) "redis"
  12. 2) "rabitmq"
  13. 3) "mongodb"

Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

  1. zadd key score member
  2. 实例
  3. redis 127.0.0.1:6379> DEL runoob
  4. redis 127.0.0.1:6379> zadd runoob 0 redis
  5. (integer) 1
  6. redis 127.0.0.1:6379> zadd runoob 0 mongodb
  7. (integer) 1
  8. redis 127.0.0.1:6379> zadd runoob 0 rabitmq
  9. (integer) 1
  10. redis 127.0.0.1:6379> zadd runoob 0 rabitmq
  11. (integer) 0
  12. redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
  13. 1) "mongodb"
  14. 2) "rabitmq"
  15. 3) "redis"

Java连接redis

  1. package test2;
  2. import redis.clients.jedis.Jedis;
  3. import redis.clients.jedis.JedisPool;
  4. import redis.clients.jedis.Tuple;
  5. public class JedisTest {
  6. public static void print(int index,Object obj) {
  7. System.out.println(String.format("%d %s", index, obj.toString()));
  8. }
  9. public static void print(String str,Object obj) {
  10. System.out.println(str+" "+obj.toString());
  11. }
  12. public static void main(String[] args) {
  13. //连接本地的 Redis 服务
  14. Jedis jedis = new Jedis("localhost");
  15. System.out.println("连接成功");
  16. //查看服务是否运行
  17. System.out.println("服务正在运行: "+jedis.ping());
  18. // jedis.flushAll();//将全部数据库删除
  19. jedis.set("hello", "world");//设置key-value
  20. print("String", jedis.get("hello"));
  21. jedis.rename("hello", "newhello");//修改key名
  22. print("rename String", jedis.get("newhello"));
  23. jedis.setex("key", 15, "value");//设置一个键值对,并设置其存在多少秒
  24. jedis.set("pv", "100");
  25. jedis.incr("pv");//将对应键的值加1
  26. print("100+1", jedis.get("pv"));
  27. jedis.incrBy("pv", 5);//将对应键的值加任意值
  28. print("100+5", jedis.get("pv"));
  29. //List(列表操作)
  30. String listName = "listA";
  31. for(int i = 0; i < 10; i++)
  32. jedis.lpush(listName, "a" + String.valueOf(i));//将值推入列表中
  33. print(3, jedis.lrange(listName, 0, 10));//从列表中取出索引为0-10的值
  34. print(4, jedis.llen(listName));//返回该列表中有多少个元素
  35. print(5, jedis.lpop(listName));//将0位置的元素推出列表,并返回其值
  36. print(6, jedis.llen(listName));
  37. print(7, jedis.lindex(listName, 3));//返回下表为3的元素
  38. print(10, jedis.lrange(listName, 0, 10));
  39. //Map
  40. String userKey = "userxx";
  41. jedis.hset(userKey, "name", "jim");
  42. jedis.hset(userKey, "age", "12");
  43. jedis.hset(userKey, "phone", "7456454");
  44. print("hash", jedis.hget(userKey, "name"));
  45. print("hash_all", jedis.hgetAll(userKey));//获取hash表中全部数据
  46. jedis.hdel(userKey, "phone");//hash表中删除一个字段
  47. print("hash_all", jedis.hgetAll(userKey));
  48. print("hash_all_key", jedis.hkeys(userKey));//获取hash表中所有的key
  49. print("hash_all_value", jedis.hvals(userKey));//获取hash表中所有的value
  50. print("hash_exist_key", jedis.hexists(userKey, "email"));//判断hash表中是否存在某字段
  51. jedis.hsetnx(userKey, "email", "123@77");//如果不存在某个字段,则添加该字段
  52. jedis.hsetnx(userKey, "name", "tom");//存在则不更新其值
  53. print("hash_all", jedis.hgetAll(userKey));
  54. //Set
  55. String likeKeys1 = "newsLike1";
  56. String likeKeys2 = "newsLike2";
  57. for(int i = 0; i < 10; i++) {
  58. jedis.sadd(likeKeys1, String.valueOf(i));//添加值到集合中
  59. jedis.sadd(likeKeys2, String.valueOf(i*2));
  60. }
  61. print("set_all_1", jedis.smembers(likeKeys1));//返回集合中的全部值
  62. print("set_all_2", jedis.smembers(likeKeys2));
  63. print("set_1_jiao_2", jedis.sinter(likeKeys1, likeKeys2));//两个集合求交集
  64. print("set_1_bing_2", jedis.sunion(likeKeys1, likeKeys2));//两个集合求并集
  65. print("set_diff", jedis.sdiff(likeKeys1, likeKeys2));//两个集合不同(前者相对于后者)
  66. print("set_exist", jedis.sismember(likeKeys1, "5"));//判断集合中是否存在某个值
  67. jedis.srem(likeKeys1, "5");//将某个值从集合中删除
  68. print("set_all_1", jedis.smembers(likeKeys1));
  69. print("set_length_1", jedis.scard(likeKeys1));//返回该集合中有多少个值
  70. jedis.smove(likeKeys2, likeKeys1, "14");//将第一个集合中的某个值移动到第二个集合中
  71. print("set_all_1", jedis.smembers(likeKeys1));
  72. print("set_all_2", jedis.smembers(likeKeys2));
  73. //SortedSet(优先队列)
  74. String rankKey = "rankKey";
  75. jedis.zadd(rankKey, 15, "jim");
  76. jedis.zadd(rankKey, 60, "Ben");
  77. jedis.zadd(rankKey, 90, "Lee");
  78. jedis.zadd(rankKey, 80, "Mei");
  79. jedis.zadd(rankKey, 75, "Lucy");
  80. print("zset_length", jedis.zcard(rankKey));//返回优先队列中元素的个数
  81. print("zset_count", jedis.zcount(rankKey, 61, 100));//返回优先队列中值在这个范围内的有多少个
  82. print("zset_score", jedis.zscore(rankKey, "Lucy"));//返回某一个键的值
  83. jedis.zincrby(rankKey, 2, "Lucy");//将存在的Lucy的值加2
  84. print("zset_score", jedis.zscore(rankKey, "Lucy"));
  85. jedis.zincrby(rankKey, 2, "tom");//将不存在的tom的值加2,会创建一个tom
  86. print("zset_count", jedis.zcount(rankKey, 0, 100));
  87. print("zset_range", jedis.zrange(rankKey, 0, 3));//返回按值的升序排列中前四个值的键名
  88. print("zset_revrange", jedis.zrevrange(rankKey, 0, 4));//返回按值的降序排序中前四个值的键名
  89. for(Tuple tuple : jedis.zrangeByScoreWithScores(rankKey, "0", "100")) {
  90. print("zset", tuple.getElement() + ":" + String.valueOf(tuple.getScore()));
  91. }
  92. print("zset_rank", jedis.zrank(rankKey, "Ben"));//返回某个键名升序排第几(实际是索引号)
  93. print("zset_revrank", jedis.zrevrank(rankKey, "Ben"));//返回某个键名降序排第几(实际是索引号)
  94. //redis是单线程的,最多只能用8个资源,所以每次用完需要关闭,可以通过关闭和不关闭测试
  95. JedisPool pool = new JedisPool();
  96. for(int i = 0; i < 20; i++) {
  97. Jedis j = pool.getResource();
  98. j.get("a");
  99. System.out.println("POOL" + i);
  100. j.close();
  101. }
  102. }
  103. }

发表评论

表情:
评论列表 (有 0 条评论,402人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis 连接命令

    Redis 命令用于在 redis 服务上执行操作。 要在 redis 服务上执行命令需要一个 redis 客户端。Redis 客户端在我们之前下载的的 redis 的安装包