redis5种数据类型的常用命令

注意:http://redisdoc.com/ 如果想要了解redis各个数据类型具体的用法,可以参考此地址

也可以参考如下地址:https://www.runoob.com/redis/redis-sets.html

 

下面这个图是对redis五种基本数据类型的基本操作进行的总结,参考文章链接在本文最后

 

通用方法总结:

1. redis默认一共有16个库,编号分别为0-15 默认为0号库,可以通过select来切换,语句为:select 1(意思是切换到1号库)

2. del key1 key2:单个/多个删除key(key存在)。

3. expire key second:为给定key设置过期时间,单位为秒。

4. ttl key:以秒为单位,返回给定key的剩余生存时间(TTL , time to live),不存在key返回-2,无过期时间的key返回-1。pttl key为毫秒。

5. persist key:移除key的过期时间,key将持久保存。

6. type key:返回key所存储的值的类型,不存在的key返回none。

7. exists key:检查给定的key是否存在。

8. dbsize:查找当前数据库的key的数量。

9. keys pattern:查找所有符合给定模式(pattern)的key。

10. rename key newkey:给key重命名。

11. randomkey:从当前数据库中随机返回一个key。

 

 

 

 

 

 

String--字符串

 

字符串是redis最基本的数据结构,他将以一个键和一个值存储于redis内部,类似于java里的map。redis可以通过键去找到值。

1. set key value:写入命令。

2. get key:读取命令,通过键获取值。

3. del key:删除命令,通过key删除键值对,返回删除数(通用命令--其他数据结构也可以使用这个命令)。

4. strlen key:取key指向字符串的长度,返回长度值。

5. getset key value:修改原来key的对应值,并将旧值返回,如果原来值为空,则返回空,并设置新值。

6. getrange key start end:获取子串,start和end代表角标,redis是从0开始计算的。

7. append key value:在原来串的最后添加上新的value,返回key指向新字符串的长度。

 

 

 

 

Hash--哈希

 

redis中的哈希结构就如同java的map一样,一个对象中有很多键值对,他是特别适合存储对象的,如果内存足够大,那么一个redis的hash结构可以存储232-1键值对(40多亿)。在redis中,hash是一个string类型的field和value的映射表,因此我们存储的数据实际在redis内存中都是一个个字符串而已。比如一个角色有三个字段,编号(id),姓名(name),年龄(age),那么它的角色hash结构如图

1. role_1:意思是key,通过它就可以找到这个hash结构

2. field和value:hash结构由一系列的field和value组成

 常用的命令

1. hmset key field1 value1 fileld2 value2...:在hash结构中设置多个键值对。

2. hset key field value:在hash结构中设置单个键值对。返回长度

3. hgetall key:获取所有hash结构中的键值。返回键和值。

4. hmget key field1 field2...:获取指定的键值对的值。

5. hdel key field1 field2...:删除hash结构中指定的字段。

6. hsetnx key field value:当hash结构中不存在对应的键,才设置值。

7. hlen key:获取hash结构中键值对的熟练

8. hkeys key:获取所有hsh结构中的键

9. hvals key:获取hash结构中所有的值。

10. hexists key field:判断hash结构中是否存在field字段。存在返回1,否则返回0.

11. hincrby key field increment:指定给hash结构中的某一个字段加上一个整数,要求该字段也是整数字符串。

12. hincrbyfloat key field increment:指定给hash结构中的某一个字段加上一个浮点数,要求该字段是数字型字符串。

 

 linked-list---链表

 

redis的链表结构可以存储多个字符串,并且它是有序的,可以存储232-1个节点(超过40亿),redis链表是双向的,因此可以从左到右,也可以从右到左遍历它存储的节点。链表结构的优势在于插入和删除,因为链表的数据节点是分配在不同的内存区域的,并不连续,只是根据上一个节点保存下一个节点的顺序来索引而已,无需移动元素,劣势在于查找。因为是双向的,所以redis链表命令分为左操作和右操作两种命令,左操作意味着从左到右,右操作意味着从右到左。

其中命令以 ‘l’ 开头的代表左操作,以 ‘r’ 开头的代表右操作。 

1. lpush key node1 node2...:把节点加入到链表最左边,如图最后链表的从左到右顺序应该为node3--node2--node1

2. rpush key node1 node2...:把节点加入到链表的最右边,如图最后链表的从左到右的顺序应该为node1--node2--node3

 

3. lindex key index:读取下标为index的节点,返回节点字符串,从0开始算。

4. llen key:求链表的长度。返回链表节点数。

5. lpop key:删除左边第一个节点,并将其返回。

6. rpop key:删除右边第一个节点,并将其返回。

7. linsert key before|after pivot node:插入一个节点node,并且可以指定在值为pivot的节点的前面或者后面,如果list不存在,则报错,如果没有值为对应pivot的,也会插入失败返回-1

8. lpushx list node:如果存在key为list的链表,则插入节点node,并且作为从左到右的第一个节点。如果不存在,则失败。

 

9. rpushx list node:如果存在key为list的链表,则插入节点node,并且作为从左到右的最后一个节点。如果不存在,则失败。

 

10. lrange list start end:获取链表list从start下标到end下标的节点值。包含两边的。

 

11. lrem list count value:如果count为0,则删除所有值等于value的节点,如果count不为0,则先对count取绝对值,假设记为abs,然后从左到右删除不大于abs个等于value的节点,注意:count为整数,如果为负数,则redis会先求取其绝对值,然后传递到后台操作。

 

12. lset key index node:设置列表下标为index的节点的值为node

 

13. ltrim key start stop:修剪链表,只保留从start到stop的区间的节点,其余的都删除掉,包含start和end的节点会留下。

 

另外提供几个链表的阻塞命令

1. blpop key timeout:移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止,相对于lpop命令,它的操作是进程安全的。

2. brpop key timeout:移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。相对于rpop命令,它的操作是进程安全的。

3. rpoplpush key src dest:按从左到右的顺序,将一个链表的最后一个元素移除,并插入到目标链表最左边。不能设置超时时间。

4. brpoplpush key src dest timeout:按从左到右的顺序,将一个链表的最后一个元素移除,并插入到目标链表最左边,并可以设置超时时间。

 

 

set---集合

 

redis的集合不是一个线性结构,而是一个哈希表结构,他的内部会根据hash分子来存储和查找数据。要注意:

1. 集合是无序的。

2. 对于集合而言,它的每一个元素都是不能重复的,当插入相同记录的时候都会失败。

3. 集合的每一个元素都是string数据结构类型。

4. redis的集合可以对于不同的集合进行操作,比如求出两个或者以上集合的交集,差集和并集等。

5. 通过这些操作我们可以实现sns中的好友推荐和bolog的tag功能。

集合命令如下:

1. sadd key value:添加set集合 可以多添加

2. smembers key:查看元素

3. srem key value:删除元素,可以多个删除,删除的时候需要指定key和value值

4. spop key [count]:随机删除1个/n个值 其中count不写就是默认一个值,count写就是删除对应熟练的值。被移除的随机元素。 当集合不存在或是空集时,返回 nil 。

5. sdiff key1 key2:取两个集合的差集,以前面的那个集合为主

6. sinter key1 key2:取两个集合的交集

7. sinterstore newkey key1 key2:取两个集合(set1 set2)的交集,之后存入新的集合中(set3)

8. sunion key1 key2:取两个集合(set1 set2)的并集

9. sunionstore newkey key1 key2:取两个集合(key1 key2)的并集并将结果存入新key中(newkey)

10.scard key:获取元素的个数。

11. sismember key value:判断某个值是否存在于对应的key中,存在返回1,不存在返回0。

12. srandmember key:随机返回一个元素。

13. smove key1 key2 value:将key1 中的某个元素value移除,并添加到第二个key2中。

 

 Sorted Set---有序集合

 

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

1. 不同的是每个元素都会关联一个double类型的分数。

2. redis正是通过分数来为集合中的成员进行从小到大的排序。

3. 有序集合的成员是唯一的,但分数(score)却可以重复。

4. 分数可以为负数。

有序集合命令如下:

1. zadd key score value:插入一个/多个元素,其中score可以重复,但是value不能重复

2. zcard key:返回元素个数。

3. zcount key minScore  maxScore :查询score分数在count1和count2区间的值的个数(包括minScore  maxScore 和maxScore )

4. zrevrange key count1 count2:用于返回指定分数区间内的成员。其中成员的位置按分数值递减(从大到小)来排序。(这里的1和4是角标,从0开始算的)

5. zrem key value:删除

 

 

 

 

 

参考:https://www.cnblogs.com/epipremnum-aureum/p/8619092.html

持续更新!!!

posted @ 2020-02-03 17:00  夏夜凉凉  阅读(783)  评论(0编辑  收藏  举报