您的位置:首页 > 数据库 > Redis

redis_2_key_五大数据类型常用命令

2018-01-04 11:57 1151 查看
一、key

1、查看当前库的key个数:dbsize—需要注意的是这个返回来的个数包含过期key。



2、查看当前库的所有key :keys *



3、模糊查询1 :keys XX?—表示XX后面只要带一个的都会被匹配,无论这一个是什么,但是必须只能是一个。



4、模糊查询2 :keys XX*—表示匹配XX后面所有的,无论有多少个还是没有。



5、判断当前库是否含有这个key :existis key—有就返回1,没有就返回0。



6、设置过期时间 :expire key 时间(单位:秒)—设置成功就返回1,失败就返回0。可以看到一分钟后,time这个key已经失效了,查出来是null





7、查看key还有多少时间过期:ttl key—返回值的单位为秒,返回-1表示永久有效,-2表示过期,如果过期,key和value都不存在了,get key返回的将会是null,keys *中也不会有key这个key值



8、查看key的value是什么类型的:type key



9、删除某个key:del key



10、替换某个key的value:第二次赋值就回覆盖第一次赋的值。



11、迁移key:move key 目标数据库下标—将当前库中的key迁移到1库中,结果当前库中该key已经消失,1库中多个一个key。如果1库中已经有key这个key值的话,就转移失败,返回0。



二、string

1、set-赋值

2、get-获取值

3、del-删除值

4、字符串拼接:append key 123:表示将key中的值拼接上123,返回的是key的值的长度,如果key原本就存在,那也不会报错,就相当于建了一个key,值为123,返回的长度则为3



5、获取value的长度:strlen key :返回的是key对应value的长度,如果不存在就返回0。



6、value加一:incr key :表示将key中的值加1。如果key的值不是数字,则会报错:”ERR value is not an integer or out of range”。



8、value加任意值:incrby key 要加的数字 :表示将key中的值加某个值。后面和加1同理。

9、value减一:decr key :表示将key中的值减1。后面和加1同理。

10、value减任意值:decrby key 要加的数字 :表示将key中的值减某个值。后面和加1同理。

11、获取指定返回之内的值:getrange key 起始下标 终止坐标:表示返回下标从起始坐标开始到终止坐标,如果终止超过了key值的长度-1,不会报错,返回的是开始坐标到key长度-1。类似于between,,and。。的关系,类似于java中的substring方法。



12、设定指定返回之内的值:setrange key 起始下标 值。



注意1:假如这个key的值是null,那给他的下标为1的地方赋值会怎样???



注意2:假如这个key的值的长度为4,那给他的下标为3的地方赋值会怎样???



13、设置key的缓存时间:setex key 过期时间(单位:秒) 值。





14、setnx key sss:如果key中有值,则返回0,如果key中没有值,则将sss赋值给key,并返回1。



15、连续赋值-获取值:mset k1 v1 k2 v2—表示一下对两个key赋值



16、msetnx:对应给定的keys到他们相应的values上。只要有一个key已经存在,msetnx一个操作都不会执行。 由于这种特性,msetnx可以实现要么所有的操作都成功,要么一个都不执行,这样可以用来设置不同的key,来表示一个唯一的对象的不同字段。如果所有的key被set返回1,如果没有key被set(至少其中有一个key是存在的)返回0。



三、list:单key多value

1、左入栈:



2、右入栈:



3、遍历list集合的value值:注意没有rrange这个命令



可以按照下图理解:



4、左侧出栈:出栈每次只能是一个



5、右侧出栈:出栈每次只能是一个



小结:左入栈,后进先出;右入栈,先进先出

6、按下标取值:lindex key 下标

注意:注意:redis中的下标是从0开始的,但是可视化工具中显示开始的是1而已,lindex list01 1:即取下标为1的值,3在可视化工具中是第2个,但是下标还是1



7、获取list集合的长度:llen key —如果key不存在,则返回0



8、删除多少个指定元素:lrem key 删除元素的个数 删除的元素



思考:到底删的是几个2呢?—实验证明,删除的应该是从左侧开始删的



思考:那么如果这个list中没有那个多个要删除的值会怎么样???—实现证明:只把有的那个1删了。



思考:那么如果要删除的那个元素不存在会怎么样???—结果:一个也没删除,返回0



9、集合元素截取:ltrim key 起始坐标 终止坐标—表示将key的value从起始坐标截取到终止坐标后的值赋值给key



10、集合之间赋值:将list05中的右侧头元素放在list01左侧头元素中



思考:假如:list05中一个元素都没有会怎么样???



11、给指定下标赋值(这个和String类型差不多):lset key 下标 值



思考:如果这个list01中什么都没有,直接给下标为1的赋值会怎么样???



12、在value之前之后插入新的值:linsert key before 值1 值2 —表示在key中的值1之前插入值2



思考:如果没有这个值1怎么办???—实验证明没有插进去,然后返回给我们-1。



注意:after和before效果一样

list总结:

1、list他是一个字符链表。left和right都可以插入添加

2、如果key不存在就新建链表

3、如果key存在,新增内容

4、如果key中的value全部移除,则key也消失了

5、链表的操作无论是头部还是尾部效率都很高,但是对中间元素操作,效率就低

四、hash:kv模式不变,但是v是一个键值对

1、赋值:hset KEY key value—返回存进去的个数

2、取值:hget KEY key—返回value值(hget KEY:没有这个命令)



3、一个KEY赋值多个key-value:hmset KEY k1 v1 k2 v2—存进去则返回ok,注意原来这个KEY里面已经有key-value的可以接着赋值,如果对原来的key再次赋值,原来的将会被覆盖。

4、获取一个KEY的多个key的value值:hmget KEY k1 k2



5、删除一个KEY的key的值:hdel KEY k1 —注意,没有hdel KEY 这个命令



6、获取KEY的所有key- value:hgetall KEY



7、获取KEY的key- value个数:hlen KEY



8、判断KEY中是否含有key:hexist
e6bd
s KEY key —存在就是1 不存在就是0



9、获取KEY中的所有key:hkeys KEY

10、获取KEY中的所有value:hvals KEY



11、将KEY中的key的value加上一个数:hincrby KEY key 要加的值 —注意,这是对整数的,小数用:hincrbyfloat



12、不覆盖的赋值:hsetnx KEY key value—有则不覆盖,并且返回0,没有则赋值,并且返回1。



五、set:单值多value

1、赋值(增加值):sadd key value

2、遍历:smembers key

3、判断成员元素是否是集合的成员:sismember key value—是就返回1,不是就返回0。



4、删除某个元素:srem key value—删除key中的某个value,如富value存在,就删除,然后返回1,不存在就返回0。



5、随机取几个元素:srandmember key 个数



6、元素出栈:spop key —随机出栈,就是指不定出来的是哪一个,这个和list不同。





6、值转移:smove key1 key2 value1 —将key1中的value1值给key2,key1将失去value1。



7、并集:sunion key1 key2 —返回key1和key2的并集。



8、交集:sinter key1 key2 —返回key1和key2的交集。



9、差集:sdiff key1 key2 key3 —返回的是key1中有,key2和key3中都没有的元素。



六、zset:sorted set—相当于在原来set的基础上加一个score值

之前:set是k1 v1 k2 v2

现在:set是k1 score v1 k2 score v2—相当于键值对的形式存在,但是是一个整体。

1、赋值:zadd key 键值对1 键值对2 键值对3 键值对4

2、获取所有的value(不带score):zrange key 0 -1

3、获取所有的value(带score):zrange key 0 -1 withscores—-注意:withscores有s,value在前,score在后。



4、获取score从多少到多少的value:zrangebyscore key 开始的score 结束的score。



思考:现在里面只有60到90的数据,那么为我score从50开始会输出什么呢???



5、获取score从多少到多少的value,右侧不取—相当于数学里面的开集合,不是闭集合:zrangebyscore key 开始的score ( 结束的score



6、limit的使用:zrangebyscore key 开始的score 结束的score limit 开始下标 取多少个—再次强调,取出来的东西下标是从0开始的,只是redis可视化工具显示的是1。 这里的limit类似于mysql中的分页。



7、删除:zrem key value值—表示删除key中的value并删除对应的score。注意是value。





8、获取元素个数:zcard key —返回key中的元素个数。



9、获取两个score之间的value值:zcount key —返回key中的元素个数。



10、获取value对应的下标值:zrank key value—返回key中value的下标。

11、获取value对应的score值:zscore key value—返回key中value的score。

12、逆序获取value对应的下标值:zrevrank key value—返回key中value的逆序下标。原来的顺序逆序后再取元素的下标

13、逆序遍历集合:zrevrange key 0 -1



14、根据score范围逆序取值:zrevrangebyscore key 结束score 开始score

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  redis