【补:】

  1. 对于json数据的存储                                                
  2. 对于hyperloglog的应用
    ​
    > pfadd user mango
    (integer) 1
    > pfadd user zhangsan
    (integer) 1
    > pfadd user lisi
    (integer) 1
    > pfadd user mango     #重复则不计数
    (integer) 0
    > pfcount user
    (integer) 3
    ​
    > pfadd paper mango
    (integer) 1
    > pfadd paper zhangsan
    (integer) 1
    > pfmerge pv user paper    #合并
    OK
    > pfcount pv
    (integer) 3
    
    ​

        3.keys 表达式(例如*) 的应用:用于查看所有数据类型的key,不关注value,但是如果key信息过多将会造成长期阻塞;

        4.scan 0 [match 表达式(例如*)] [count num(单次建议获取元素数量,仅是建议,返回数量可能多或少)]的应用:为了解决keys的阻塞问题,产生了 scan 指令,即根据下标分片查询,每次查询会返回客户端一个下标和查询结果,然后客户端根据下标重复查询,直到返回结果的下标是0,这代表遍历了一遍,但是并不会保证其中的原子性,即中间发生增删会导致整个查询结果的key数据漏查或者重复,因此仅适用于弱一致性的场景。

1、对String类型的操作

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

操作如下:

Java代码示例如下:

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

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

操作如下:

Java代码示例如下:

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

复制代码

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

操作如下:

Java代码示例如下:

复制代码

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

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

操作如下:

Java代码示例如下:

复制代码

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

复制代码

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

操作如下:

Java代码示例如下:

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

1.6、getrange

格式:getrange key startOffset endOffset

功能:获取指定索引范围内的值

Java代码示例如下: 

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

setrange

格式:setrange key offset replaceWord

功能:用新字符串覆盖原字符串的指定偏移量以及后面部分的字符

先设置一个键值对:
SET key1 "Hello World"

从偏移量 6(即第7个字符,原字符串中的 W)开始,用 "Redis" 覆盖原字符串的对应部分:
SETRANGE key1 6 "Redis"

修改后的值:
"Hello Redis"

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

操作如下:

Java代码示例如下:

复制代码

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

复制代码

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

操作如下:

Java代码示例如下:

复制代码

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

复制代码

1.9、bitcount:获取范围内为1的二进制个数,格式是:bitcount key [start end] (获取字符串第start索引位 - 第end索引位的字符串中为1的二进制个数)

操作如下:

 

# 设置一个多字节字符串 "AB"
SET mykey "AB"
# "A" = 0x41 = 01000001 (2个1)
# "B" = 0x42 = 01000010 (2个1)
# 整个字符串共 4 个 1

# 只统计第 1 - 第 1 个字节(字符 'A')
BITCOUNT mykey 0 0

# 只统计倒数第 1 - 倒数第 1 个字节(字符 'B')
BITCOUNT mykey -1 -1
# 只统计倒数第 2 - 倒数第 1 个字节(字符 'AB')
BITCOUNT mykey -2 -1

Java代码示例如下:

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

# 设置一个包含 "A"(ASCII 码 65,二进制 01000001)的键
SET mykey "ABCDA"

# 统计整个字符串中比特为 1 的数量
BITCOUNT mykey
# 设置一个多字节字符串 "AB"
SET mykey "AB"
# "A" = 0x41 = 01000001 (2个1)
# "B" = 0x42 = 01000010 (2个1)
# 整个字符串共 4 个 1

# 只统计第 1 个字节(字符 'A')
BITCOUNT mykey 0 0

# 只统计倒数第 1 个字节(字符 'B')
BITCOUNT mykey -1 -1

操作如下:

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

操作如下:

Java代码示例如下: 

复制代码

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

复制代码

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐