Redis的数据类型及命令行操作

来源:互联网 发布:漂亮的注册页面源码 编辑:程序博客网 时间:2024/05/21 17:41
Redis是一个高性能的 key-value 对存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、hash(哈希)、set(无序集合)、zset(有序集合)。

1. string类型
string是最简单的数据类型,一个key对应一个value,string类型是二进制安全的。
redis的string类型可以包含任何数据,比如jpg图片或者序列化的对象。

set 键名 键值        
设置键名key对应的值为string类型的键值value。如果key已经存在,则覆盖原先的value。
set name lijie       添加一个键值对的数据

get 键名        
取出键名所对应的值。如果key不存在,则返回 (nil)。
get name      输出:"lijie"

setnx 键名 键值            
设置键(key)对应的值(value)。如果key不存在,则设置成功,并返回1;如果key已经存在,则设置失败,并返回0。

setex 键名 有效期 键值        
设置键(key)对应的值(value),同时指定该数据的有效期(秒数)。
setex color 10 red            设置键值对color => red,同时指定该键值对的有效期为10秒。

setrange 键名 替换的起始位置 子字符串        
设置指定的key的value的子字符串,从替换的起始位置开始替换。返回值为新value的长度。   
set email lijie@163.com            OK
setrange email 6 gmail.com        (integer) 15
get email                "lijie@gmail.com"

mset 键1 值1 键2 值2 ...       
一次设置多个键值对,成功返回OK,表示所有的值都设置了,失败返回0,表示没有任何值被设置。
mset name1 lijie1 name2 lijie2        OK

msetnx 键1 值1 键2 值2 ...        
一次设置多个键值对,成功返回OK,表示所有的值都设置了,失败返回0,表示没有任何值被设置。不会覆盖已经存在的key。如果有已经存在的key,则设置失败并返回0。

getset 键 值                
给key设置一个新的value,同时返回key对应的旧value。如果旧的value不存在,则返回 (nil)。

getrange 键 起始位置 结束位置        
获取key对应的value的子字符串。

mget 键1 键2 ...            
一次获取多个key的值,如果对应的key不存在,则对应返回的value为 (nil)。

incr 键                    
把key对应的value加1,返回加1后的value。如果key之前不存在,进行incr操作后,它所对应的value就是1(只能对数值进行操作)。

incrby 键 数值                
与incr类似,只不过incrby是以指定的数值增量改变key对应的value。(数值也可为负数)

decr 键                    
与incr相反,它是把key对应的value做减减操作。

decrby 键 数值                
与incrby的作用相反。

append 键 字符串            
把key对应的value,在末尾追加(连接)一个字符串,返回追加后的value的长度。(也可以对不存在的key进行操作)
append name @qq.com

strlen  键                 
读取key对应的value的长度。

2. hash类型
hash是一个string类型的key(键)和value(值)的映射表。hash特别适合用于存储对象。
相较于将对象的每个字段存储为单个string类型,将对象存储在hash类型中占用的内存更少,也可以更方便地存取整个对象。

hset 表名 键 值
创建一个hash表。 如果key不存在,则创建。如果key已经存在,则覆盖对应的value。
hset user username zhangsan    
创建一个名为user的hash表,key为username,对应的value为zhangsan。

hsetnx 表名 键 值
如果key不存在,则创建。如果key已经存在,则不创建,同时返回0。

hmset 表名 键1 值1 键2 值2 ...        
在hash表中,一次存入多个键值对。  成功,输出OK。
hmset user username lisi sex male age 20    如果key已经存在,则覆盖其对应的value。

hget 表名 键        
获取hash表中的某个key对应的value。
hget user sex            输出:"male"。

hmget 表名 键1 键2 ...  
一次获取表中的多个key所对应的value。
hmget user username age sex

hincrby 表名 键    数值    
给表中的key对应的value一个增量,增量可以为正数,也可以为负数。输出变化后的value。
hincrby user age -2

hexists 表名 键        
判断表中的某个key是否存在。如果存在,输出1;否则,输出0。

hlen 表名        
获取表中key的数量。

hdel 表名 键       
删除表中的某个键。如果删除成功,输出1;否则,输出0

hkeys 表名        
查询表中所有的key。

hvals 表名        
查询表中所有的value。

hgetall 表名        
查询表中所有的key、value。

3. list类型
list类型的数据是一个链表结构,它既可以作为栈,也可以作为队列。

lpush 链表名 值            
从链表(list)的头部插入一个字符串元素。返回值为链表中的元素个数。(后进先出,相当于栈)
lpush mylist happy        输出:1
lpush mylist new        输出:2
lpush mylist year        输出:3

lrange mylist 0 -1         
取出链表中的所有元素。
注意:0代表链表的头,-1代表链表的尾。最后插入的元素位于表头,最先插入的元素位于表尾。

rpush 链表名 值            
从链表(list)的尾部插入一个字符串元素。 (先进先出,相当于队列)
0代表链表的头,-1代表链表的尾。最先插入的元素位于表头,最后插入的元素位于表尾。
rpush mylist2 hello        输出:1
rpush mylist2 world        输出:2
lrange mylist2 0 -1        取出链表中的所有元素。
输出:
1) "hello"
2) "world"

linsert 链表名 before 被参照的值 要插入的值        
在链表中的某个元素前插入一个元素。

rpush mylist3 world            输出:1
linsert mylist3 before world hello    输出:2

lrange mylist3 0 -1        取出链表中的所有元素。
输出:
1) "hello"
2) "world"

lset 链表名 索引 值    
将链表中指定位置(索引)的元素,替换为新的元素(值)。 如果成功,输出OK。注意,如果该索引不存在,则会报错。链表的索引是从0(表头)开始的。

lrem 链表名 n 值    
从链表中,删除n个与指定的值相同的元素(如果n=0,代表删除所有相同的元素)。如果成功,输出删除的元素的个数;否则,输出0。

ltrim 链表名 索引1 索引2    
只保留索引1到索引2范围内的数据。(0表示表头,即表中的第一个元素;-1表示表尾,即表中的最后一个元素)

lpop 链表名            
从表头删除一个元素,并输出被删除的元素。

rpop 链表名           
从表尾删除一个元素,并输出被删除的元素。

rpoplpush 链表1 链表2        
从表1的尾部删除一个元素,并将其插入表2的头部。  如果成功,输出被删除的元素。

 lindex 链表名 索引        
输出索引对应的元素(值)。

llen 链表名            
输出链表的长度(也就是链表中的元素个数)。

4. set类型
set类型是集合,它是string类型数据的无序集合。对集合可以取并集、交集、差集。通过这些操作可以实现SNS中的好友推荐和blog中的tag功能。

sadd 集合名 元素    
向集合中添加一个元素。添加成功,输出1;否则,输出0。
sadd myset a    输出:1
sadd myset b    输出:1
sadd myset a    输出:0

smembers myset        
查看集合中的所有元素。
输出:
1) "a"
2) "b"

srem 集合名 元素    
删除集合中的一个指定元素。 删除成功,输出1;否则,输出0。

spop 集合名         
随机删除集合中的一个元素。删除成功,输出被删除的元素。

sdiff 集合1 集合2    
输出集合1中有的但集合2中没有的元素。即输出只有集合1中才有的元素。

sdiffstore 集合3 集合1 集合2        
比较集合1和集合2,把只有集合1中才有的元素存入集合3。

sinter 集合1 集合2     
输出集合1和集合2的交集。即输出集合1和集合2中都有的元素。

sinterstore 集合3 集合1 集合2        
把集合1和集合2的交集存入集合3。

sunion 集合1 集合2    
输出集合1和集合2的并集。

sunionstore 集合3 集合1 集合2        
把集合1和集合2的并集存入集合3。 如果成功,输出存入的元素的个数。

smove 集合1 集合2 元素            
把集合1中的指定元素移动到集合2中。

scard 集合                
输出集合中的元素个数。

sismember 集合 元素            
检查集合中是否存在某个元素。如果存在,输出1;否则,输出0

srandmember 集合            
随机输出集合中的一个元素。

5. sorted set类型(zset类型)
sorted set类型是set类型的升级,它在set的基础上增加了一个顺序属性,故是有序集合。在有序集合中,元素默认是按编号升序排列的。可以把它看做是只有两个字段的MySQL表,一个字段表示编号(order),另一个字段表示值(value)。

zadd 集合名 编号 元素        
在有序集合中,添加一个元素,同时指定它的编号(序号)。如果该元素已经存在,则只更新它的编号。

zadd zset 1 a        输出:1
zadd zset 2 b        输出:1
zadd zset 3 b        输出:0

zrange zset 0 -1 withscores    
取出有序集合中所有的元素和它对应的编号(索引0,代表集合的头;索引-1,代表集合的尾)。
输出:
1) "a"
2) "1"
3) "b"
4) "3"

zrem 集合名 元素        
删除集合中的一个指定元素。 删除成功,输出1;否则,输出0。    

zincrby 集合名 增量 元素    
在集合中,给指定的元素对应的编号一个增量。如果指定的元素不存在,则先添加该元素,再设定其编号为该增量。 如果成功,输出元素对应的编号。
zincrby zset 3 a            
将集合zset中的元素a的编号加3,输出更新后的编号

zrank 集合名 元素        
输出集合中指定元素的索引。  注意:索引和编号的区别。索引是默认存在的,代表位置,0表示集合的头部,-1表示集合的尾部。编号是人为指定的,代表元素的序号。在有序集合中,元素默认是按编号升序排列的。

zrevrank 集合名 元素        
先将元素按照编号降序排列,再输出指定元素的索引。

zrevrange zset  0 -1 withscores       
先将集合zset中的元素按照编号降序排序,再取出所有的元素和它对应的编号。(按索引取或者说按位置取)

zrangebyscore 集合名 起始编号 结束编号 withscores    
取出指定编号区间内的元素和它对应的编号。(按编号取)

zcount 集合名 起始编号 结束编号       
统计指定编号区间内的元素的个数。

zcard 集合名                
统计集合中元素的个数。

zremrangebyrank 集合名 起始位置 结束位置    
删除指定的索引区间内的元素  (按索引删除),输出删除的元素个数。

zremrangebyscore 集合名 起始编号 结束编号    
删除指定的编号区间内的元素  (按编号删除) ,输出删除的元素个数。

1 0
原创粉丝点击