当前位置:   article > 正文

redis关于string的常用命令_redis string操作

redis string操作

【补:】

  1. 对于json数据的存储                        ​​​​​​​        ​​​​​​​        ​​​​​​​        
  2. 对于hyperloglog的应用
    1. > pfadd user mango
    2. (integer) 1
    3. > pfadd user zhangsan
    4. (integer) 1
    5. > pfadd user lisi
    6. (integer) 1
    7. > pfadd user mango #重复则不计数
    8. (integer) 0
    9. > pfcount user
    10. (integer) 3
    11. > pfadd paper mango
    12. (integer) 1
    13. > pfadd paper zhangsan
    14. (integer) 1
    15. > pfmerge pv user paper #合并
    16. OK
    17. > pfcount pv
    18. (integer) 3

1、对String类型的操作

1.1、get、set、del:获取key的值、设置key的值、删除key的值

操作如下:

Java代码示例如下:

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 /**
  4. 4 * redis中对于字符串类型的: get、set、del 操作示例
  5. 5 */
  6. 6 public class String_get_set_del_operation {
  7. 7
  8. 8 public static void main(String[] args) {
  9. 9 Jedis jedis = new Jedis("127.0.0.1",6379);
  10. 10 /**
  11. 11 * 示例1: 相当于执行 set k1 v1
  12. 12 */
  13. 13 String set = jedis.set("k1", "1");
  14. 14 System.out.println("set = " + set);
  15. 15 System.out.println("======================");
  16. 16
  17. 17 /**
  18. 18 * 示例2: 相当于执行 get k1
  19. 19 */
  20. 20 String k1 = jedis.get("k1");
  21. 21 System.out.println("k1 = " + k1);
  22. 22 System.out.println("======================");
  23. 23
  24. 24 /**
  25. 25 * 示例3:相当于执行 del k1
  26. 26 */
  27. 27 Long delk1 = jedis.del("k1");
  28. 28 System.out.println("delk1 = " + delk1);
  29. 29 }
  30. 30 }

1.2、incr、decr:递增和递减整数值,格式是:incr key值

操作如下:

Java代码示例如下:

  1. 1 /**
  2. 2 * redis中对于字符串类型的: incr、decr 操作示例
  3. 3 */
  4. 4 public class String_incr_decr_operation {
  5. 5
  6. 6 public static void main(String[] args) {
  7. 7 Jedis jedis = new Jedis("127.0.0.1",6379);
  8. 8 /**
  9. 9 * 示例1: 相当于执行 incr k1
  10. 10 */
  11. 11 Long incrk1 = jedis.incr("k1");
  12. 12 System.out.println("incr k1 = " + incrk1);
  13. 13
  14. 14 System.out.println("======================");
  15. 15
  16. 16 /**
  17. 17 * 示例2: 相当于执行 decr k1
  18. 18 */
  19. 19 Long decrk1 = jedis.decr("k1");
  20. 20 System.out.println("decr k1 = " + decrk1);
  21. 21 }
  22. 22 }

复制代码

1.3、incrby、decrby:递增和递减整数值,可指定增减的数值,格式是:incrby key值 正负数

操作如下:

Java代码示例如下:

复制代码

  1. 1 /**
  2. 2 * redis中对于字符串类型的: incrby、decrby 操作示例
  3. 3 */
  4. 4 public class String_incrby_decrby_operation {
  5. 5 public static void main(String[] args) {
  6. 6 Jedis jedis = new Jedis("127.0.0.1",6379);
  7. 7 /**
  8. 8 * 示例1: 相当于执行 incrBy k1 v1
  9. 9 */
  10. 10 Long incrBy = jedis.incrBy("k1",4);
  11. 11 System.out.println("incrBy = " + incrBy);
  12. 12
  13. 13 System.out.println("======================");
  14. 14
  15. 15 /**
  16. 16 * 示例2: 相当于执行 decrBy k1 v1
  17. 17 */
  18. 18 Long decrBy = jedis.decrBy("k1",2);
  19. 19 System.out.println("decrBy = " + decrBy);
  20. 20 }
  21. 21 }

1.4、incrbyfloat:递增和递减浮点数,格式是:incrbyfloat key值 正负数值

操作如下:

Java代码示例如下:

复制代码

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 /**
  4. 4 * redis中对于字符串类型的: incrbyfloat操作示例
  5. 5 */
  6. 6 public class String_incrbyfloat_operation {
  7. 7 public static void main(String[] args) {
  8. 8 Jedis jedis = new Jedis("127.0.0.1",6379);
  9. 9 /**
  10. 10 * 示例1: 相当于执行 incrbyfloat k1 v1
  11. 11 */
  12. 12 Double incrByFloat1 = jedis.incrByFloat("k1", 4.2);
  13. 13 System.out.println("incrByFloat1 = " + incrByFloat1);
  14. 14
  15. 15
  16. 16 Double incrByFloat2 = jedis.incrByFloat("k1", -2.2);
  17. 17 System.out.println("incrByFloat2 = " + incrByFloat2);
  18. 18
  19. 19 }
  20. 20 }

复制代码

1.5、append:在尾部追加值,格式是:append key值 追加的值

操作如下:

Java代码示例如下:

复制代码

  1. 1 /**
  2. 2 * redis中对于字符串类型的: append操作示例
  3. 3 */
  4. 4 public class String_append_operation {
  5. 5
  6. 6 public static void main(String[] args) {
  7. 7 Jedis jedis = new Jedis("127.0.0.1",6379);
  8. 8 /**
  9. 9 * 示例1: 相当于执行 append k1 v1
  10. 10 */
  11. 11 Long append = jedis.append("k1", "1");
  12. 12 System.out.println("append = " + append);
  13. 13 }
  14. 14 }

复制代码

1.6、getrange、setrange:获取指定索引范围内的值,格式是:getrange key值 起始索引 结束索引

操作如下:

Java代码示例如下: 

复制代码

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 /**
  4. 4 * redis中对于字符串类型的: getrange操作示例
  5. 5 */
  6. 6 public class String_getrange_operation {
  7. 7 public static void main(String[] args) {
  8. 8 Jedis jedis = new Jedis("127.0.0.1",6379);
  9. 9 /**
  10. 10 * 示例1: 相当于执行 getrange k1 start end
  11. 11 */
  12. 12 String k1 = jedis.getrange("k1", 0, -1);
  13. 13 System.out.println("k1 = " + k1);
  14. 14
  15. 15 String k11 = jedis.getrange("k1", 1, 5);
  16. 16 System.out.println("k11 = " + k11);
  17. 17
  18. 18 }
  19. 19 }

复制代码

1.7、strlen:返回键值的长度,格式是:strlen key值 

操作如下:

Java代码示例如下:

复制代码

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 /**
  4. 4 * redis中对于字符串类型的: strlen操作示例
  5. 5 */
  6. 6 public class String_strlen_operation {
  7. 7 public static void main(String[] args) {
  8. 8 Jedis jedis = new Jedis("127.0.0.1",6379);
  9. 9 /**
  10. 10 * 示例1: 相当于执行 strlen k1
  11. 11 */
  12. 12 Long k1 = jedis.strlen("k1");
  13. 13 System.out.println("k1 = " + k1);
  14. 14 }
  15. 15 }

复制代码

1.8、mget、mset:同时获取多个键的值、同时设置多个键的值,格式为:mget 多个key值、mset key值 value(key和value可以是多对)

操作如下:

Java代码示例如下:

复制代码

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 import java.util.List;
  4. 4
  5. 5 /**
  6. 6 * redis中对于字符串类型的: mget mset 操作示例
  7. 7 */
  8. 8 public class String_mget_mset_operation {
  9. 9 public static void main(String[] args) {
  10. 10 Jedis jedis = new Jedis("127.0.0.1",6379);
  11. 11 /**
  12. 12 * 示例1: 相当于执行 mget k1 k2 k3 k4
  13. 13 */
  14. 14 List<String> mget = jedis.mget("k1", "k2", "k3", "k4");
  15. 15 mget.stream().forEach(System.out::println);
  16. 16
  17. 17 String mset = jedis.mset("k1", "1", "k2","2","k3","3");
  18. 18 System.out.println("mset = " + mset);
  19. 19
  20. 20 mget = jedis.mget("k1", "k2", "k3", "k4");
  21. 21 mget.stream().forEach(System.out::println);
  22. 22 }
  23. 23 }

复制代码

1.9、bitcount:获取范围内为1的二进制位数,格式是:bitcount key值[start end] (ps: 这里的start end 是指value的值的起始位置)

操作如下:

 

Java代码示例如下:

复制代码

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 /**
  4. 4 * redis中对于字符串类型的: bitcount 操作示例
  5. 5 */
  6. 6 public class String_bitcount_operation {
  7. 7
  8. 8 public static void main(String[] args) {
  9. 9 /**
  10. 10 * 获取字母"a"对应的二进制
  11. 11 */
  12. 12 byte[] bytes = "a".getBytes();
  13. 13 String s = Integer.toBinaryString(bytes[0]);
  14. 14 System.out.println("s = " + s);
  15. 15
  16. 16 Jedis jedis = new Jedis("127.0.0.1",6379);
  17. 17 /**
  18. 18 * 示例1: 相当于执行 bitcount k1[start end]
  19. 19 */
  20. 20 String set = jedis.set("k1", "a");
  21. 21 Long bitcount = jedis.bitcount("k1");
  22. 22 System.out.println("bitcount = " + bitcount);
  23. 23
  24. 24 /**
  25. 25 * 因为 k1对应的value是'a'只有一个长度
  26. 26 */
  27. 27 Long bitcount2 = jedis.bitcount("k1", 0, 2);
  28. 28 System.out.println("bitcount2 = " + bitcount2);
  29. 29
  30. 30 }
  31. 31 }

复制代码

 1.10、getbit、setbit:获取指定位置的二进制位的值、设置指定位置的二进制位的值,格式是:getbit key值 offset索引、setbit key值 offset索引 值

操作如下:

getbit key值 offset索引

字母'a'对于的二进制位"01100001"

setbit key值 offset索引 值

因为字母'b'的二进制位"01100010",我们只要把字母"a"的二进制的第7位设置为0、第六位设置为1,就可以等到一个字母"b"了。

Java代码示例如下 

复制代码

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 /**
  4. 4 * redis中对于字符串类型的: getbit、setbit 操作示例
  5. 5 */
  6. 6 public class String_getbit_setbit_operation {
  7. 7 public static void main(String[] args) {
  8. 8 /**
  9. 9 * 获取字母"a"对应的二进制
  10. 10 */
  11. 11 byte[] bytes = "a".getBytes();
  12. 12 String s = Integer.toBinaryString(bytes[0]);
  13. 13 System.out.println("s = " + s);
  14. 14
  15. 15 Jedis jedis = new Jedis("127.0.0.1",6379);
  16. 16 /**
  17. 17 * 示例1: 相当于执行 getbit k1 1
  18. 18 */
  19. 19 String set = jedis.set("k1", "a");
  20. 20 Boolean getbit = jedis.getbit("k1", 1);
  21. 21 System.out.println("getbit = " + getbit);
  22. 22
  23. 23 /**
  24. 24 * 示例2:相当于执行 setbit k1 7 0 / setbit k1 6 1
  25. 25 */
  26. 26 jedis.setbit("k1",7l,"0");
  27. 27 jedis.setbit("k1",6l,"1");
  28. 28 String k1 = jedis.get("k1");
  29. 29 System.out.println("k1 = " + k1);
  30. 30 }
  31. 31 }

复制代码

1.11、bitop:对多个二进制位进行位操作,格式是:bitop 操作 目的key key值1 key值2,操作有:and、or、xor、not。 (key值可以有多个)

value的编码是ascii编码中的字符集(数值也是字符集)操作如下:

"a" --- 01100001

"b" --- 01100010

"0" --- 00110000(并非00000000)

1.12、getset:原子的设置key的值,并返回key的旧值,格式是:getset key value 

操作如下:

Java代码示例如下: 

复制代码

  1. 1 import redis.clients.jedis.Jedis;
  2. 2
  3. 3 /**
  4. 4 * redis中对于字符串类型的: getset 操作示例
  5. 5 */
  6. 6 public class String_getset_operation {
  7. 7 public static void main(String[] args) {
  8. 8 Jedis jedis = new Jedis("127.0.0.1",6379);
  9. 9 /**
  10. 10 * 示例1: 相当于执行 getSet k1 v1
  11. 11 */
  12. 12 String getSet = jedis.getSet("k1", "111");
  13. 13 System.out.println("getSet = " + getSet);
  14. 14
  15. 15 System.out.println("======================");
  16. 16 }
  17. 17

复制代码

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/727018
推荐阅读
相关标签
  

闽ICP备14008679号