企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
>[info] string数据类型与结构 **string类型简介:** String类型是redis的最基础的数据结构,也是最经常使用到的类型。而且其他的四种类型多多少少都是在字 符串类型的基础上构建的,所以String类型是redis的基础。 ***** string 类型的值最大能存储 512MB,这里的String类型可以是简单字符串、复杂的xml/json的字符串、二进 制图像或者音频的字符串、以及可以是数字的字符串。 ***** **set get 命令:** set:该命令用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。 get:该命令用于获取指定 key 的值。如果 key不存在,返回 nil 。如果key对应储存的值不是字符串类 型,返回一个错误。 del:删除元素 ``` # 设置 set key value # 获取 get key # 删除 del key ``` ***** **getset 命令:** 该命令用于获取指定的key的旧值,然后按照新值对key进行赋值。当key中没有旧值的时候返回 nil。 ``` # 获取旧数据 并设置 新数据 getset name cx # 再次获取 get name ``` ![](https://img.kancloud.cn/02/6b/026bb1b6a19ce928919fa88b52fb31cf_302x106.png) ***** **mget 命令:** 该命令用于返回多个key的值,当其中某一个KEY的值不存在,返回nil ``` set age 10 set sex 1 # 获取多个key mget name age sex ``` ![](https://img.kancloud.cn/ed/6b/ed6b05f3e28e18e2a7906543ccfd3e5b_323x184.png) ***** **decr 命令:** 对key对应的数字做减1操作。如果key不存在,那么在操作之前,这个key对应的值会被置为0。 如果key有一个错误类型的value或者是一个不能表示成数字的字符串,就返回错误。 ``` # 让 age 为 10 减 1 变成 9 decr age # 再次获取 get age ``` ![](https://img.kancloud.cn/a7/2f/a72f7e39f382708f439dd7ffb165c8e6_250x107.png) ***** **incr 命令:** 对存储在指定key的数值执行原子的加1操作,如果指定的key不存在,那么在执行incr操作之前, 会先将它的值设定为0。如果指定的key中存储的值不是字符串类型(fix:)或者存储的字符串类型不能表 示为一个整数,那么执行这个命令时服务器会返回一个错误(eq:(error) ERR value is not an integer or out of range)。 ``` # 获取 get age # 自增 incr age ``` ![](https://img.kancloud.cn/9d/03/9d033b41b6f6fb23959e624b8bc14942_278x112.png) ***** >[info] list数据类型与结构: list类型是用来存储多个有序的字符串的,列表当中的每一个字符看做一个元素,一个列表当中可以存储有 一个或者多个元素,redis的list支持存储2^32次方-1个元素。redis可以从列表的两端进行插入(pubsh)和 弹出(pop)元素,支持读取指定范围的元素集,或者读取指定下标的元素等操作。redis列表是一种比较灵 活的链表数据结构,它可以充当队列或者栈的角色。 ***** redis列表是链表型的数据结构,所以它的元素是有序的,而且列表内的元素是可以重复的。意味着它可以 根据链表的下标获取指定的元素和某个范围内的元素集。 ***** **lpush 命令:(先进先出)** 将一个或多个值插入到列表头部。 如果 key 不存在,则创建list,然后再插入数据操作。 当 key 存在但不是列表类型时,返回一个错误。 ``` # 向头部插入2个数据(lpush ranking mysql php redis) lpush ranking mysql lpush ranking redis # 查看 10个区间的数据 lrange ranking 0 10 ``` ![](https://img.kancloud.cn/4e/6b/4e6b24416182afe4191f7b90ac8440f9_341x165.png) ***** **rpush 命令:(先进后出)** 同理,将一个或者多个元素从list的尾部插入。 ***** **blpop 命令:** redis的list是链表结构所以BLPOP命令正是取出列表的第一个元素,如果list当中没有没有元素,会 一直等待到超时,或者发现有数据为止。 ``` # 10是指定10秒内返回,假如10秒没有可返回的数据,就返回nil blpop ranking 10 ``` ![](https://img.kancloud.cn/ae/14/ae145cdefe49941dd7890a59a07fb6d3_330x211.png) ***** **brpop 命令:** 同理,Brpop是移出list列表的最后一个元素。 ***** **linsert 命令:** 指的是在list列表的某一个元素前或者后插入另外一个元素。当指的的元素不存在时,不执行任何 动作。如果列表不存在时,视为空列表,不执行任何动作。 ``` 127.0.0.1:6379> lpush ranking mysql (integer) 1 127.0.0.1:6379> lpush ranking redis (integer) 2 127.0.0.1:6379> linsert ranking before redis php (integer) 3 127.0.0.1:6379> lrange ranking 0 10 1) "php" 2) "redis" 3) "mysql" 127.0.0.1:6379> ``` ***** **lindex 命令:** 用于通过链表的下标索引获取列表中的元素。这里的下标也可以是负数表示list的最后一个元 素,-2表示倒数第二个元素。 ``` 127.0.0.1:6379> lrange ranking 0 10 1) "php" 2) "redis" 3) "mysql" 127.0.0.1:6379> lindex ranking 0 "php" 127.0.0.1:6379> lindex ranking 1 "redis" 127.0.0.1:6379> lindex ranking -2 "redis" 127.0.0.1:6379> ``` ![](https://img.kancloud.cn/c4/21/c421024af2a1eb86f24d09a68f15fc3a_363x222.png) ***** **lrange命令:** 返回指定list区间内的元素。区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元 素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。 ``` 127.0.0.1:6379> lrange ranking 0 3 1) "php" 2) "redis" 3) "mysql" 127.0.0.1:6379> ``` ![](https://img.kancloud.cn/e3/eb/e3eb88276c9e634e415483e383a86870_377x115.png) *****