redis的使用方式

mac2022-06-30  99

常用的语法以及使用方式:          key中不能包含回车空格等,key不要太长,占用内存。     概念介绍:          差集: a:{1,2,3} b:{2,3,4},以a为锚点,差集为1。          交集:共有部分就是交集{2,3}          并集:所有出现过的部分合并就是并集{1,2,3,4}  

string类型:redis最基础的类型,redis字符串是二进制安全的,这意味着他们有一个已知长度没有任何特殊字符终止,所以你可以存储任何东西,512M为上限。

string在redis中的表现形式:     struct sdf{          long len;          long free;          char buf[];      }     添加键值:          SET key value [EX seconds][PX milliseconds][NX|XX]          设置键/值,重复设置会覆盖之前的。          例:set name tom       添加值和生存时间:          SETEX key seconds value          设置键aaa,值bbb,存活时间5s           例:setex aaa 5 bbb          注意:setex是原子性操作,设置值和设置有效时间会在同一时间完成。         根据键获取值,不存在返回nil,得到的值不是字符串,将返回一个错误,get只能用于处理字符串          GET key          例:get aaa        将value追加到原来的key的末尾:           APPEND key value          key不存在就会执行set操作       同时设置一个或者多个key-value对,key存在会覆盖原值。          MSET key value [key value ...]          获取多个key-value          MGET key [key...]          覆写:在指定位置偏移复写value值,从offset开始          STRANGE key offset value          如:redis>set a "hello world"                    OK                                       redis> strange a 6 "Redis"                     (integer) 11                         redis>GET a                    "hello Redis"     获取键值长度:          STRLEN key       其他指令:      GETSET     设置新值返回旧值。     getset key value     set a 1     get a      // 返回1     getset a 2     //   返回1并将值改为2      get a      // 返回2       GETRANGE   得到字符串的子字符串存放在一个键( 获取当前键对应的值在索引内的部分     getrange key startindex endindex      set a 123456     getrange a 0 1     //返回1     getrange a 1 3     //返回234           GETBIT       对 key 所储存的字符串值,获取指定偏移量上的位(bit)。     getbit key offset      SETBIT       对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。     setbit key offset value (offset的值必须>=0)        SETNX       将 key 的值设为 value ,当且仅当 key 不存在。     setnx key value        MSETNX    同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。     msetnx key value [key value...]        PSETEX     和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。(版本>=2.6.0)     psetex key milliseconds value           INCR           将 key 中储存的数字值增一。数字+1,非数字返回错误,key不存在,先将值初始化为0,在执行incr操作。     incr key           INCRBY      将 key 所储存的值加上指定增量。大体同上。     incr key increment        INCRBYFLOAT     为 key 中所储存的值加上指定浮点数增量,最多保留小数点后17位。(版本>=2.6.0)     incrbyfloat key increment        DECR         将 key 中储存的数字值减一。     decr key           DECRBY     将key中存储的数字减去固定值。     decrby key decrement      hash类型:     redis中哈希值是字符串字段和字符串值之间的映射。     相比string类型,hash类型提供了更多域的操作,因此在表现对象时,它是非常合适的数据类型。     Redis中哈希值的存储容量也是非常大的,能存储超过400十亿键值对。          添加键值:     HSET key field value         hset what sb sb.com     设置what键中sb域的值为sb.com,重新设置会覆盖之前的。          设置多个键值:     HMSET key field value [field value....]       获取值:     HGET key field     hget what sb          获取多个值:     HMGET key field [field..]     hmget what sb ss          获取所有值:这里包含域和值。排列:域、值...     HGETALL key      比如:     hmset mykey aa aa.com bb bb.com     hgetall mykey     //aa               域     //aa.com      值     //bb     //bb.com          验证某个键下某个域是否存在,存在返回1,不存在返回0     HEXISTS key field          获取所有的域,存在返回一个列表,不存在返回一个空表     HKEYS key           获取域的数量     HLEN key          删除某键中一个或者多个域     HDEL key field [field...]      list类型   图解:     ------------------------------     头部                              尾部       list类型是一个简单的字符串列表,按照插入顺序排序。     可以在左边或者右边操作元素,左边为头部,右边为尾部。而且对于list两端的数据操作时间是固定的,即使数据是百万级的,但是如果list很大,对于中间某个数据的读取却很慢。      一个列表最多包含2^32-1个元素(超过40亿个元素)。          特点:有序、允许重复       添加元素:(自己测试只能添加一个元素,可能是版本太低)     LPUSH key value [value...]     lpush friends zhangsan lisi wangwu     从左到右依次插入表头,那么结果为:     wangwu lisi zhangsan                将指定所谓位置的值设置为某值:     LSET key index value          删除第一个元素并返回:     LPOP key          LINDEX 获取指定索引的元素,0为第一个元素,负数则从后数,如-1是最后一个元素。     LINDEX key index      比如:     lpush mylist 1 2 3     //插入三个元素,3 2 1     lindex mylist 0           //索引0的值为3     lindex mylist -1          //索引-1的值为最后一个元素1       插入元素,将值插入到某元素前/后,当目标值pivot不存在时,不进行任何操作,当key不存在,key被视为空列表,当key对应的值不是一个列表,则返回错误。     LINSERT key BREFORE/AFTER pivot value          在key对应的列表中删除count个与value相同的元素,当count为0时移除所有。count<0,移除count的绝对值个元素。     LREM key count value     比如列表: 1 2 3 1 1 1     lrem 某key -3 1 代表删除某key对应的列表中前三个值为1的元素。       lrem 某key 0 1 代表删除某key对应的列表中所有值为1的元素。       获取列表的长度,key不存在返回0     LLEN key       指定范围删除其他所有元素,可以用负数,同上     LTRIM key start stop     ltrim mylist 0 2      //只保留列表中索引0-2号元素      set类型       set类型是一个有序的字符串集合,你可以快速的完成添加、删除以及测试元素是否存在。     特点:无序       添加多元素:     SADD key value [value..]       随机取出并删除元素,返回的元素即被删除的元素。     SPOP key           取出全部元素,无元素返回空集合。     SMEMBERS key       比较差集,获取第一个key于其他几个key的差集。     SDIFF key [key...]     例子:     SADD a 1 2 3 4     SADD b 2 3 4     SADD c 3 4 5     结果:1      这里要比较的就是 a - ((b + c)中a元素的部分)即a中的2 3 4在b或c元素中出现过了,未出现的只有1。              获取交集     SINTER key [key...]          获取并集     SUNION key [key...]          判断某个元素在集合中是否存在,存在返回1,不存在返回0     SISMEMBER key member     例子:     SADD aaa 111 222 333 444     SISMEMBER aaa 222     返回1     SISMEMBER aaa 555     返回0               移动元素,将元素从A集合移动到B集合,从A集合中删除元素,在B集合中添加元素。     SMOVE sourcekey destinationkey members     SADD a 11 22 33     SADD b 44 55     SMOVE a b 22     结果:     a:{11,33}     b:{22,44,55}          移除多个元素     SREM key member [member..]     zset类型     有序集合,与普通集合非常类似,不允许重复元素。不同于普通集合的是,有序集合包含一个评分属性,使用评分属性来控制集合的顺序,评分属性可以重复,但集合内数据不允许重复。使用有序集合可以非常快的对数据进行增删改。可以通过评分和次序获得一个范围的元素。可以快速存在性测试,快速访问集合中的某个元素。       添加多个元素     ZADD key score member [[score member] [score member]...]          移除多个元素     ZREM key member [member...]       获得指定元素的评分     ZSCORE key member          获得指定位置的元素值(withscores属性展示score值),返回的数据递增显示     ZRANGE key start stop [withscores]       获取结合成员的数量     ZCARD key          获取指定评分内的集合成员数量,包含min、max的值     ZCOUNT key min max          获取元素在结合中的排名,即索引,从0开始     ZRANK key member          给集合内某元素的评分增加增量,比如本身评分2000,加500,评分变成2500     ZINCREBY key increment member        对于key的管理:     模糊查询所有匹配的key     KEYS pattern      keys *a*     查询所有key中包含字符a的key       查询某个key是否存在,存在返回0,不存在返回1     EXISTS key           将某个key从当前数据库转移到目标数据库中,redis中默认使用的是数据库0,切换数据库命令是select databasename(比如databasename = 1),这样就切换到数据库1中了。     如果当前数据库没有这个key,则移动失败返回0。若目标数据库中已经存在当前key,则无移动效果。成功返回1,失败返回0。     MOVE key db          重名名某key,key不存在或者和新key相同返回错误,新key已存在将覆盖原值。     RENAME key newKey          排序SORT     SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern...]] [ASC | DESC] [ALPHA] [STORE destination]       设置生存时间,单位:秒     EXPIRE key second               获取某key的剩余生存时间,单位秒,返回-2证明没有这个key,返回-1代表key存在没有设置剩余时间。     TTL key                                

来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/douJiangYouTiao888/p/6474054.html

最新回复(0)