Go 18.0 专业五


redis 数据类型

<h2>redis 数据类型</h2> <p>redis的五种数据类型是:1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sort set (有序集合)。其中,string(字符串)是redis中最基本的数据类型,一个key对应一个value,string 可以包含任何数据</p> <h3>字符串string</h3> <p>字符串是所有编程语言中最常见和最常用的数据类型,而且也是redis最基本的数据类型之一,而且redis中所有key的类型都是字符串,它是一个由字节组成的序列,在Rediss中是二进制安全的。这意味着该类型可以接受任何格式数据,如JPEG图像数据和Json对象说明信息。它是标准的key-value,通常用于存储字符串、整数和浮点。Value可容纳高达512MB的数据</p> <h4>添加一个key</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e6e1a151cc20c4859de5e860d50b912e&amp;file=file.png" alt="" /></p> <pre><code>//设置一个key value set name liwenchao //设置一个3秒的key,value, 3秒后查询就为nil set name2 lili ex 3</code></pre> <h4>获取一个key的内容</h4> <pre><code>//可以重复多次定义一个key set name liwenchao //如上面演示内容 get name</code></pre> <h4>删除一个key</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=e8e8f81f32f989b1d8997980251d2757&amp;file=file.png" alt="" /></p> <pre><code>//删除name=liwenchao这个key del name</code></pre> <h4>批量设置多个key,value</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=8a1fe453b237033e9e3f4d5e9ddbfd96&amp;file=file.png" alt="" /></p> <pre><code>//mset key1 value1 key2 value2 mset name1 liwenchao name2 gaolili</code></pre> <h4>批量根据key获取多个value</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c5e4211e24b14c59e423d76434a33772&amp;file=file.png" alt="" /></p> <pre><code>//mget key1 key2 mget name1 name2</code></pre> <h4>追加数据</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=5835c8450772d5b8d4a4301bbca758a9&amp;file=file.png" alt="" /></p> <pre><code>//append key1 appendvalue append name1 app</code></pre> <h4>数值递增</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4f18c183e16380387061add2ec425d6d&amp;file=file.png" alt="" /></p> <pre><code>//设置一个key,value为int的值 set num 10 //让num的value自动+1 incr num</code></pre> <h4>数值递减</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c856fc3b882a40f3429c416e9ef4d89f&amp;file=file.png" alt="" /></p> <pre><code>//让num的value自动-1 decr num</code></pre> <h4>获取字符串key的长度</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ac1ef52b89ead3375090bc2d327872e3&amp;file=file.png" alt="" /></p> <pre><code>//获取key为name1的value的长度 strlen name1</code></pre> <h4>判断key是否存在</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=26d80e01faadc70564a7e61901cdde12&amp;file=file.png" alt="" /></p> <pre><code>//有会返回1,没有会返回0 exists name1</code></pre> <h4>查看key的过期时间</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=dabb6e17e55391507a2389ae1616977c&amp;file=file.png" alt="" /></p> <pre><code>//ttl 查看key的剩余生存时间 // -1为永不过期, // -2没有这个key // num key的剩余有效时间</code></pre> <h4>重新设置key的过期时间</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ea5d304a285b25223befbdfd08b28cd2&amp;file=file.png" alt="" /></p> <pre><code>expire name3 120</code></pre> <h4>取消key的过期时间变为永久</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=4afb9e891a9fe824f3c776e7d0c2622f&amp;file=file.png" alt="" /></p> <pre><code>persist name3</code></pre> <h3>列表list</h3> <p>列表是一个双向可读可写的管道,其头部是左侧,尾部是右侧,一个列表可以最多包含2^32-1个元素,即4294967295个元素</p> <h4>生成列表并插入数据</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=2f37d3c5115a7902ea2843ce0533917c&amp;file=file.png" alt="" /></p> <pre><code>//创建list1的列表并插入value1,value2,value3,value3在列表的最左侧 lpush list1 value1 value2 value3</code></pre> <h4>获取列表长度</h4> <pre><code>llen list</code></pre> <h4>向列表追加数据</h4> <pre><code>//从左边追加 lpush list1 name1 //从右边追加 rpush list1 name2 </code></pre> <h4>获取列表指定范围数据</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=ae93bd3d13b5c1f9b829f235f82066a5&amp;file=file.png" alt="" /></p> <pre><code>//name4在最左边,序列号为0 ,name3序列号为1 lrange list2 1 2 //如果只有4个元素。0-99可以打印所有的 lrange list2 0 99</code></pre> <h4>移除左右一个元素</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c140fb37aaba4b9b9ccb0160fd46e566&amp;file=file.png" alt="" /></p> <pre><code>//从列表右边删除第一个 rpop list2 //从列表左边删除第一个 lpop list2</code></pre> <h3>集合set</h3> <p>set是string类型的无序集合,集合中的成员是唯一的,这就意味着集合中不能出现重复的数据,可以在两个不同的集合中对数据进行比对并取值</p> <h4>生成集合key</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=38d278353c919517749b8941497288f9&amp;file=file.png" alt="" /></p> <pre><code>//生成无序集合set1 sadd set1 v2 v5</code></pre> <h4>追加数据</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=91ae6c986d13211813a6720553802275&amp;file=file.png" alt="" /></p> <pre><code>//可以看到加入相同数据时,返回为0,表示没变化 sadd set1 v2</code></pre> <h4>查看集合所有数据</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=0702fd9ca2393c78f6b235bc74f59c54&amp;file=file.png" alt="" /></p> <pre><code>//获取无序集合set1的所有数据 smembers set1</code></pre> <h4>获取集合的差集,交集,并集</h4> <pre><code>//差集,set1有而set2没有的 sdiff set1 set2 //交集,set1有,set2也有的 sinter set1 set2 //并集,set1和set2元素的集合并去重 sunion set1 set2 </code></pre> <h3>有序集合</h3> <p>redis有序集合和集合一样,也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double双精度浮点数类型的分数,redis正是通过该分数来为集合中的成员进行从小到大的排序,有序集合成员是唯一的,但分数却可以重复,集合是通过hash表实现的,所以添加,删除,查找的复杂度是O(1),集合中最大的成员数是2^32-1,每个集合可以存储40多亿成员</p> <h4>生成有序集合</h4> <pre><code>//生成有序集合zset1 zadd zset1 1 v1 //获取类型 type zset1 //一次添加多个元素 zadd zset2 1 v1 2 v2 3 v3</code></pre> <h4>集合排行</h4> <p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=51cb479b2b218b9fe20a354b2dc260fa&amp;file=file.png" alt="" /></p> <pre><code>//显示所有key,value zrevrange zset2 0 -1 withscores //显示集合zset2内所有的key zrange zset2 0 -1</code></pre> <h4>获取集合长度</h4> <pre><code>zcard zset1</code></pre> <h4>基于索引返回数值</h4> <pre><code>//id号从1到3的 zrange zset1 1 3</code></pre> <h4>返回某个数值的索引</h4> <pre><code>zrank zset2 v2</code></pre> <h3>哈希hash</h3> <p>hash是一个string类型的feild和value的映射表,hash特别是和用于存储对象,redis中每个hash可以存储40多亿键值对</p> <h4>生成hash key</h4> <pre><code>//设置一个键值对,我这里设置两个的时候报错了,按理说不应该报错的,待观察 hset hash1 name liwenchao type hash1</code></pre> <h4>获取hash key字段值</h4> <pre><code>//获取key为name的键值对的值 hget hash1 name</code></pre> <h4>删除一个hash key的字段</h4> <pre><code>hdel hash1 name</code></pre> <h4>获取所有hash表中的key</h4> <pre><code>hkeys hash1</code></pre> <h4>获取指定hash的所有key,value</h4> <pre><code>hgetall hash1</code></pre>

页面列表

ITEM_HTML