redis常用五大数据类型是string、list、set、zset、hash
redis提供的函数很多,可以在这个网页查看全部函数http://redisdoc.com,我们平常用的多的其实不多,下面介绍各个类型常用到的函数。
首先select是选择哪个库的,redis库从0开始,默认是0,例如:select 1就是选择第二个库。
dbsize是查看库里面有多少个key。
然后介绍下key的常用函数:
- keys * 查询所有key
- exists key 判断某个key是否存在
- move key db 将key移到哪个库
- expire key 秒:给key设定过期时间
- ttl key 查看key还有多少秒过期,-1表示永不过期,-2表示已过期
- type key 查看key是什么类型的
一、string(字符串)
-
set 添加
-
get 查看
-
del 删除key
-
append 追加值
-
strlen 获取字符串的长度
-
setnx key value 添加key,如果这个key不存在才成功
-
setex key time value 设置key的值的 同时,设置过期时间
-
incr 自增1,incrby num 自增多少(值必须是数字)
-
decr 自减,decrby num 自减多少(值必须是数字)
-
getrange key start end 获取范围的值,end为-1表示最后
- 例:key的值为abc123;
getrange key 0 -1
,获取到的是abc123;getrange key 0 2
,获取到的是abc
-
Setrange key start value 设置范围的值,start从哪里开始,设置后会覆盖start位置开始的值
- 例:key的值为abc123;
setrange key 0 xyz
,则值变为xyz123
-
mset/mget/msetnx 前面的m是more的缩写,表示可以多个key一起设置,功能和上面的一样。注意:多个key设置有原子性,要么全部成功要么全部失败。
二、list(列表)
- lpush key value [value...] 创建key,并向列表的左边插入n个值,顺序是从左至右,这个跟“栈”有点像,先进后出。
- 例:lpush key 1 2 3 4,那么lrange取出的时候就是4 3 2 1。
- 能理解 ? 第一次放进去是1,第二次是2,那么这时候list里面就是
21
这样摆放的,第三次是321
,第四次是4321
.
- rpush key value [value...]创建key,并向列表的右边插入n个值,顺序是从右至左
- 例:rpush key 1 2 3 4,那么lrange取出的时候就是1 2 3 4
- lrange key start stop 从列表左边取出值,-1表示末尾
- lpop/rpop lpop 从左边提出元素,rpop从右边提出元素
- lpush key 1 2 3 4后,list里是4321,lpop key后把4踢出去了,list里面就剩321了;而如果是rpop key,list里面就是432
- lindex key index 取出key中index下标的值
- llen key获取list长度
- lrem key count value 删除list中count个value。
8. ltrim key start stop 截取list中start 到 stop 范围的值,然后再赋给list
9. rpoplpush source(源列表) destination(目的列表) 从源列表的右边踢出最后一个元素,往目的列表的左边插入元素
- lset key index value 给list中index位置的值设为value
- linsert key before/after value1 value2 在list中value1的值前面或后面插入value2
- 例:list中是1234;linsert key before 2 x;那么现在list就变为1x234
List它是一个字符串链表,left、right都可以插入添加。
链表的操作无论是头和尾效率都极高,但加入是对中间的元素操作,那么效率就不太好。
三、set(集合)
set里面是元素不能重复
- sadd key member [member...] 添加set和元素
- smembers key 查看set里面的元素
- sismember key member 判断set里member是否存在
- scard key 获取set里面的元素个数
- srem key member 删除set里的member元素
- srandmember key count 随机取出set中count个元素
- spop key 随机找出一个元素出栈
- smove source(源集合) destination(目的集合) member 将源集合汇总的member 放到目的集合中
- sdiff key [key...] 取两个集合的差集
- sinter key [key...] 取2个集合的交集。交集的英文是 intersection
- sunion key [key...] 取2个集合的并集
四、zset(有序集合)
和set一样,里面是元素不能重复,并且它多了一个score的值,用来排序的
- zadd key score member [score member ...] 添加zset和元素,注意和set不同的是这里多了个score
- zrange key start stop [withscores] 取出zset中start到stop的元素,加上withscores[可选]会列出score
- zrangebyscore key min max [withscores] [limit offset count] 按照分数min到max列出zset元素,加withscores[可选]会列出score,加limit 限制条数,和mysql中的limit一样。不包含使用(。
- 例如:zset中的元素ztest是v1 10,v2 20 ,v3 30 ,zrangebyscore ztest (20 30。"("表示不包含,那这里是20<x<=30,结果是20,如果30也加上(,就变成了20<x<30。那么结果为空。
- zrem key member 删除set里的member元素
- zcard key 获取zset里面的元素个数
- zrank key member 获取zset中member的下标
- zscore key member 获取zset中member的score
- zrevrank key member “逆序”获取zset中member的下标,这里的下标是从后面开始算的,原来最后一位的下标变为0.
- zrevrange key start stop [withscores] 和zrange相反,它从后面获取zset的元素
- zrevrangebyscore key min max [withscores] [limit offset count] 和zrangebyscore相反,它从后面获取zset的元素
五、hash(哈希)
- hset key field value 添加一个hash,key里面是由key:value组成
- hget key field 获取hash中field的值
- hmset / hmget 批量添加和查询
- sdel key field [field...] 删除hash中的一个或多个field
- hlen key获取hash的长度
- hexist key field 判断hash中field是否存在
- hkeys key 列出hash中的所有field
- hvals key 列出hash中所有的值
- hincrby key field increment 给hash中field的值加increment
- hincrbyfloat key field increment 给hash中field的值加increment,其中increment是float
- hsetnx key feild value 和setnx一样,如果field 不存在,才能添加成功
最新评论