Redis real combat 04. Brief introduction to common commands of redis data structure

itread01 2021-01-23 14:20:22
redis real combat brief introduction


#### String `P39`Redis Is a sequence of bytes , You can store the following 3 Kinds of values : Byte string (byte string)、 Integers 、 Floating point numbers . When needed , Redis Will convert integers to floating-point numbers . The value range of integers and the long integer type of the system (long) In the same , The range and precision of floating-point numbers are related to IEEE 754 Double precision floating point numbers in standard (double) In the same .##### Redis Add and subtract commands in `P39`| command | Format | describe || ----------- | ------------------------- | ---------------------------------------- || INCR | INCR key | Add... To the number stored in the key 1 || DECR | DECR key | Subtract... From the number stored in the key 1 || INCRBY | INCRBY key increment | Add the numeric value stored in the key to the integer increment increment || DECRBY | DECRBY key decrement | Subtract the integer decrement from the numeric value stored by the key decrement || INCRBYFLOAT | INCRBYFLOAT key increment | Add the number value stored in the key to the floating-point increment increment | The relevant demo code is as follows (`main` And `handleResult` For the definition, see :[01. Redis Introduction to data structure ](https://mp.weixin.qq.com/s/vUsOfARXsM8H1ts6mC5tmA)):```go// Perform string type number related operations func executeNumberOperation(conn redis.Conn) { // Delete the original value handleResult(redis.Int(conn.Do("DEL", "number"))) // Get value , Output -> ERROR: redigo: nil returned handleResult(redis.Int(conn.Do("GET", "number"))) // Self increasing 1, Returns the self incrementing value -> 1 handleResult(redis.Int(conn.Do("INCR", "number"))) // Self increasing 2, Returns the self incrementing value -> 3 handleResult(redis.Int(conn.Do("INCRBY", "number", "2"))) // Autoreduction 1, Returns the value after subtraction -> 2 handleResult(redis.Int(conn.Do("DECR", "number"))) // Autoreduction 2, Returns the value after subtraction -> 0 handleResult(redis.Int(conn.Do("DECRBY", "number", "2"))) // Self increasing 1.5, Returns the self incrementing value -> 1.5 handleResult(redis.Float64(conn.Do("INCRBYFLOAT", "number", "1.5"))) // Self increasing -1.3, Returns the self incrementing value -> 0.2 handleResult(redis.Float64(conn.Do("INCRBYFLOAT", "number", "-1.3")))}```##### for Redis Commands that handle substrings and binary biting `P40`| command | Format | describe || -------- | ------------------------------------- | ------------------------------------------------------------ || APPEND | APPEND key value | Will value Append to key The end of the current value || GETRANGE | GETRANGE key start end | return [start, end] Substrings in range || SETRANGE | SETRANGE key offset value | Substring [offset, offset + len(value)) Set to value || GETBIT | GETBIT key offset | Think of a string as a binary bit string , Get offset On the table || SETBIT | SETBIT key offset value | Think of a string as a binary bit string , Set offset The position above is value || BITCOUNT | BITCOUNT key [start end] | Statistics [start, end] How many substrings are there in the binary system in the range 1 || BITOP | BITOP operation destkey key [key ...] | operation Optional bit operations AND , OR , XOR , NOT , Save the operation results of one or more binary stop strings to destkey in | The relevant demo code is as follows :```go// Perform string type string related operations func executeStringOperation(conn redis.Conn) { // Delete the original value handleResult(redis.Int(conn.Do("DEL", "string"))) // Appending strings , Returns the current string length -> 6, The value changes to -> append handleResult(redis.Int(conn.Do("APPEND", "string", "append"))) // Get substring , return -> en handleResult(redis.String(conn.Do("GETRANGE", "string", 3, 4))) // Let the stator string , Returns the current string length -> 6, The value changes to -> appled handleResult(redis.Int(conn.Do("SETRANGE", "string", 3, "le"))) // Let the stator string , Returns the current string length -> 11, The value changes to -> application handleResult(redis.Int(conn.Do("SETRANGE", "string", 3, "lication"))) // Get binary biting , return -> 1 // ( Get the 7/8 Characters a In the binary system, the second 7%8 The binary system bit on bit , namely 0110 0001 Of the 7 position 1) handleResult(redis.Int(conn.Do("GETBIT", "string", 7))) // Set the binary system , Return to the original binary system -> 0, The value changes to -> cpplication // ( Set the 6/8 Characters a In the binary system, the second 6%8 The binary system of bit is 1, namely 0110 0001 It becomes 0110 0011) handleResult(redis.Int(conn.Do("SETBIT", "string", 6, 1))) // Statistical binary system , return -> 7 // ( Statistics [0, 1] Substrings in range cp Under the binary system 0110 0011 0111 0000 The binary system is 1 Number of ) handleResult(redis.Int(conn.Do("BITCOUNT", "string", 0, 1))) handleResult(redis.String(conn.Do("SET", "aKey", "aa"))) handleResult(redis.String(conn.Do("SET", "bKey", "b"))) // Yes aa(0110 0001 0110 0001) and b(0110 0010 0000 0000) To carry out Press bit or , The results are stored in cKey in // Returns the string length -> 2, The value is ca(0110 0011 0110 0001), handleResult(redis.Int(conn.Do("BITOP", "OR", "cKey", "aKey", "bKey")))}```Redis By using substring operation and binary biting operation , coordination `WATCH` 、`MULTI` and `EXEC` command ( I'll give you a brief introduction later , I'll go into it later ), Build any data structure you want .#### list `P42`##### Some common list commands `P42`| command | Format | describe || ------ | --------------------------- | ---------------------------------------------- || RPUSH | RPUSH key value [value ...] | Turn one or more value Insert... From the right end of the list || LPUSH | LPUSH key value [value ...] | Turn one or more value Insert... From the left end of the list || RPOP | RPOP key | Remove and return the right most element of the list || LPOP | LPOP key | Remove and return the leftmost element of the list || LINDEX | LINDEX key offset | Returns the left end of the list with an offset of offset The elements of || LRANGE | LRANGE key start end | Return to the left end of the list [start, end] All elements in the scope || LTRIM | LTRIM key start end | Remove the left end of the list and start [start, end] All elements outside the scope | The relevant demo code is as follows :```go// Perform list type related operations func executeListOperation(conn redis.Conn) { // Delete the original value handleResult(redis.Int(conn.Do("DEL", "list"))) // Right side insert one insert a, b, c, Returns the length of the current list -> 3, The list changes to -> a b c handleResult(redis.Int(conn.Do("RPUSH", "list", "a", "b", "c"))) // The left end is inserted once d, e, f, Returns the length of the current list -> 6, The list changes to -> f e d a b c handleResult(redis.Int(conn.Do("LPUSH", "list", "d", "e", "f"))) // Pop up and return the rightmost value of the list , return -> c, The list changes to -> f e d a b handleResult(redis.String(conn.Do("RPOP", "list"))) // Pop up and return the leftmost value in the list , return -> f, The list changes to -> e d a b handleResult(redis.String(conn.Do("LPOP", "list"))) // Return the left start subscript offset is offset Value , return -> d handleResult(redis.String(conn.Do("LINDEX", "list", 1))) // Remove the left end of the list and start [1, 2] All elements outside the scope , The list changes to -> d a handleResult(redis.String(conn.Do("LTRIM", "list", 1, 2)))}``` utilize `LTRIM` Commands can atomically pop up multiple elements . `P43`##### Blocking list pop-up commands and commands to move elements between lists `P43`| command | Format | describe || ---------- | ------------------------------------- | ------------------------------------------------------------ || BLPOP | BLPOP key [key ...] timeout | Pop the leftmost element from the first non empty list , Or in timeout Block in seconds and wait for pop-up elements to appear , Returns the name and element of the pop-up list , timeout For 0 It means infinite waiting || BRPOP | BRPOP key [key ...] timeout | Pop the rightmost element from the first non empty list , Or in timeout Block in seconds and wait for pop-up elements to appear , Returns the name and element of the pop-up list , timeout For 0 It means infinite waiting || RPOPLPUSH | RPOPLPUSH source destination | From source The right most element pops up in the list , Then exit this element destination At the far left of the list , And return this element || BRPOPLPUSH | BRPOPLPUSH source destination timeout | From source The right most element pops up in the list , Then exit this element destination At the far left of the list , And return this element ; If source The list is empty , It's in timeout Block and wait for pop-up elements to appear within seconds | The relevant demo code is as follows :```go// Perform list type blocking related operations func executeListBlockOperation(conn redis.Conn) { // Delete the original value handleResult(redis.Int(conn.Do("DEL", "source", "destination"))) // Pop up from the first non empty list and return the leftmost value of the list , Waiting for the most 1 second , Output -> ERROR: redigo: nil returned handleResult(redis.Strings(conn.Do("BLPOP", "source", "destination", 1))) // initialization handleResult(redis.Int(conn.Do("RPUSH", "source", "a", "b", "c"))) handleResult(redis.Int(conn.Do("RPUSH", "destination", "d", "e", "f"))) // Pop up from the first non empty list and return the leftmost value of the list , Infinite waiting , return -> a,source It becomes -> b c,destination It becomes -> d e f handleResult(redis.Strings(conn.Do("BLPOP", "source", "destination", 0))) // Pop up from the first non empty list and return the rightmost value of the list , Infinite waiting , return -> f,source It becomes -> b c,destination It becomes -> d e handleResult(redis.Strings(conn.Do("BRPOP", "destination", "source", 0))) // From source Pop up the rightmost element , And then push into destination Leftmost end , And return this element // return -> c,source It becomes -> b,destination It becomes -> c d e handleResult(redis.String(conn.Do("RPOPLPUSH", "source", "destination"))) // From source Pop up the rightmost element , And then push into destination Leftmost end , And return this element , Infinite waiting // return -> b,source Change
版权声明
本文为[itread01]所创,转载请带上原文链接,感谢
https://javamana.com/2021/01/20210123141959667h.html

  1. 【计算机网络 12(1),尚学堂马士兵Java视频教程
  2. 【程序猿历程,史上最全的Java面试题集锦在这里
  3. 【程序猿历程(1),Javaweb视频教程百度云
  4. Notes on MySQL 45 lectures (1-7)
  5. [computer network 12 (1), Shang Xuetang Ma soldier java video tutorial
  6. The most complete collection of Java interview questions in history is here
  7. [process of program ape (1), JavaWeb video tutorial, baidu cloud
  8. Notes on MySQL 45 lectures (1-7)
  9. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  10. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  11. 精进 Spring Boot 03:Spring Boot 的配置文件和配置管理,以及用三种方式读取配置文件
  12. Refined spring boot 03: spring boot configuration files and configuration management, and reading configuration files in three ways
  13. 【递归,Java传智播客笔记
  14. [recursion, Java intelligence podcast notes
  15. [adhere to painting for 386 days] the beginning of spring of 24 solar terms
  16. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)
  17. K8s Series Part 8 (service, endpoints and high availability kubeadm deployment)
  18. 【重识 HTML (3),350道Java面试真题分享
  19. 【重识 HTML (2),Java并发编程必会的多线程你竟然还不会
  20. 【重识 HTML (1),二本Java小菜鸟4面字节跳动被秒成渣渣
  21. [re recognize HTML (3) and share 350 real Java interview questions
  22. [re recognize HTML (2). Multithreading is a must for Java Concurrent Programming. How dare you not
  23. [re recognize HTML (1), two Java rookies' 4-sided bytes beat and become slag in seconds
  24. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  25. RPC 1: how to develop RPC framework from scratch
  26. 造轮子系列之RPC 1:如何从零开始开发RPC框架
  27. RPC 1: how to develop RPC framework from scratch
  28. 一次性捋清楚吧,对乱糟糟的,Spring事务扩展机制
  29. 一文彻底弄懂如何选择抽象类还是接口,连续四年百度Java岗必问面试题
  30. Redis常用命令
  31. 一双拖鞋引发的血案,狂神说Java系列笔记
  32. 一、mysql基础安装
  33. 一位程序员的独白:尽管我一生坎坷,Java框架面试基础
  34. Clear it all at once. For the messy, spring transaction extension mechanism
  35. A thorough understanding of how to choose abstract classes or interfaces, baidu Java post must ask interview questions for four consecutive years
  36. Redis common commands
  37. A pair of slippers triggered the murder, crazy God said java series notes
  38. 1、 MySQL basic installation
  39. Monologue of a programmer: despite my ups and downs in my life, Java framework is the foundation of interview
  40. 【大厂面试】三面三问Spring循环依赖,请一定要把这篇看完(建议收藏)
  41. 一线互联网企业中,springboot入门项目
  42. 一篇文带你入门SSM框架Spring开发,帮你快速拿Offer
  43. 【面试资料】Java全集、微服务、大数据、数据结构与算法、机器学习知识最全总结,283页pdf
  44. 【leetcode刷题】24.数组中重复的数字——Java版
  45. 【leetcode刷题】23.对称二叉树——Java版
  46. 【leetcode刷题】22.二叉树的中序遍历——Java版
  47. 【leetcode刷题】21.三数之和——Java版
  48. 【leetcode刷题】20.最长回文子串——Java版
  49. 【leetcode刷题】19.回文链表——Java版
  50. 【leetcode刷题】18.反转链表——Java版
  51. 【leetcode刷题】17.相交链表——Java&python版
  52. 【leetcode刷题】16.环形链表——Java版
  53. 【leetcode刷题】15.汉明距离——Java版
  54. 【leetcode刷题】14.找到所有数组中消失的数字——Java版
  55. 【leetcode刷题】13.比特位计数——Java版
  56. oracle控制用户权限命令
  57. 三年Java开发,继阿里,鲁班二期Java架构师
  58. Oracle必须要启动的服务
  59. 万字长文!深入剖析HashMap,Java基础笔试题大全带答案
  60. 一问Kafka就心慌?我却凭着这份,图灵学院vip课程百度云