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

redis基本操作-redis系列教程

2017-07-02 22:28 381 查看
Redis服务启动之后使用命令行客户端连接,你也可以借助一些Windows下面的客户端(redisdesktop)来操作。

# /usr/local/bin/redis-cli
127.0.0.1:6379>


在下面示例命令中,参数用
[]
包裹起来则表示这个参数是可选的,中间的
...
表示参数的个数是多个。

由于下面命令的操作在Redis官方文档上有示例,所以我只对命令的目的做了说明,并不逐一进行演示。

String

append key value
在值尾部追回字符

bitcount key [start end]
获取范围内为1的二进制位数。如果值为字母a,则对应的二进制为01100001(ASCII码97表示小字字母a),则里面存在1的位数就是3个。

bitfield key [GET type offset] [SET type offset value] [INCRBY type  offset increment] [OVERFLOW WRAP|SAT|FAIL]
对字符串执行任意的位域整数运算

bitop operation destkey key [key ...]
对多个二进制值进行位操作,操作有
and
or
xor
not


bitpos key bit [start] [end]
将字符串中第一个位的位置返回到1或0

decr key
递减整数值(步进为1),如果操作的值不是整数则会出错
(error) ERR value is not an integer or out of range


decrby key decrement
递减指定步进的整数值

get key
获取指定键的值

getbit key offset
获取指定位置的二进制位的值

getrange key start end
获取指定索引范围内的值

getset key value
原子设置键的值并返回key的旧值

incr key
递增或递减整数值(步进为1),如果操作的值不是整数则会出错
(error) ERR value is not an integer or out of range


incrby key increment
decrby key decrement
递增或递减指定步进的整数值

incrbyfloat key increment
递增和递减浮点数值

mget key [key ...]
同时获得多个键的值

mset key value [key value ...]
同时设置多个键值

msetnx key value [key value ...]
同时设置多个键值,如果设置的键已经存在则本次操作全都会失败。

psetex key milliseconds value
设置键值和到期时间(以毫秒为单位)

set key value [EX seconds] [PX milliseconds] [NX|XX]
设置键和值。EX设置指定的到期时间(以秒为单位),PX设置指定的到期时间(以毫秒为单位),NX只有在不存在的情况下才设置键,XX只有当它已经存在时才设置键。

setbit key offset value
设置指定位置的二进制位的值

setex key seconds value
设置键值和到期时间(以秒为单位)

setnx key value
设置键值,只有该键不存在时才设置成功。

setrange key offset value
在指定索引位置设置值(会从索引位置往后覆盖)

strlen key
获取指定键对应的值的长度

List

blpop key [key ...] timeout
从队列左侧弹出值,如果没有值则一直等待并直到过期

brpop key [key ...] timeout
从队列右侧弹出值,如果没有值则一直等待并直到过期

brpoplpush source destination timeout
将元素从一个列表转移到另一个列表,可以指定超时时间。

lindex key index
获取指定索引对应的值

linsert key BEFORE|AFTER pivot value
在指定值前或后插入元素,不会发生覆盖指定值的情况。

llen key
获取队列中元素的个数

lpop key
从队列左边中弹出值,弹出后队列中就没有这个值了。

lpush key value [value ...]
添加一个或多个值,从列表左侧加入

lpushx key value
添加一个值,只有当列表存在时才将值添加进去(不会自动创建列表)

lrange key start stop
按索引范围获取列表值,-1表示最后一个索引

lrem key count value
删除元素,count可正负,表示从左或右删除,如果值为0表示删除全部与给定值相等的项。

lset key index value
设置列表中指定索引的值,原来的值会被覆盖

ltrim key start stop
保留指定索引区间的元素

rpop key
从队列右边中弹出值,弹出后队列中就没有这个值了。

rpoplpush source destination
将元素从一个列表转移到另一个列表,目的列表名称可以是自身。

rpush key value [value ...]
添加一个或多个值,从列表右侧加入

rpushx key value
只有列表存在时才将值添加到列表中

Set

sadd key member [member ...]
往集合中添加元素,重复加的元素会去重

scard key
统计集合中的元素个数

sdiff key [key ...]
差集,返回在第一个set里面而不在后面任何一个set里面的项

sdiffstore destination key [key ...]
差集并保留结果到指定集合中

sinter key [key ...]
交集,返回多个set里面都有的项

sinterstore destination key [key ...]
交集并保留结果到指定的集合中

sismember key member
判断元素是否在集合中 ,如果存在则返回1,反之返回0

smembers key
获取集合中所有元素

smove source destination member
移动元素

spop key [count]
可以弹出元素,弹出的个数可以选填

srandmember key [count]
随机获取集合中的元素,数量为正时会随机获取多个不重复的元素;如果数量为负会随机返回多个重复的元素;数量大于集合元素则返回全部。

srem key member [member ...]
从集合中删除元素

sunion key [key ...]
并集,合并多个集合中的元素,如果有重复元素则去重

sunionstore destination key [key ...]
并集并保留结果到指定集合中

sscan key cursor [MATCH pattern] [COUNT count]
基于游标遍历集合

Hash

hdel key field [field ...]
删除某个项,并不会删除这个键

hexists key field
判断键里面的值是否存在

hget key field
获取指定键下面某个元素对应的值

hgetall key
获取该键下面所有的键值对

hincrby key field increment
增减整数数值,前提是项的值必须是整数

hincrbyfloat key field increment
增减浮点数值

hkeys key
获取所有项的键

hlen key
获取键里面的键值对数量

hmget key field [field ...]
同时获取多个值

hmset key field value [field value ...]
同时设置多个值

hset key field value
设置值

hsetnx key field value
设置值,如果field不存在时才设置

hstrlen key field
获取键值对中值的字符长度

hvals key
获取所有项的值

hscan key cursor [MATCH pattern] [COUNT count]
基于游标遍历集合

ZSet

zadd key [NX|XX] [CH] [INCR] score member [score member ...]
添加元素,score和项可以是多对,score可以是整数或浮点数,+inf表示正无穷大,-inf表示负无穷大。

zcard key
统计集合中元素个数

zcount key min max
获取分数区间内元素个数

zincrby key increment member
增减元素的分数

zinterstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
交集

zlexcount key min max
获取值按字典顺序区间内元素个数

zrange key start stop [WITHSCORES]
获取索引区间内的元素

zrangebylex key min max [LIMIT offset count]
获取区间元素根据值的字典顺序

zrevrangebylex key max min [LIMIT offset count]
获取区间元素根据值的字典顺序,结果是倒序的。

zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
获取分数区间内的元素,默认包含端点值,如果加上
(
表示不包含。可以使用limit限制返回元素个数。

zrank key member
获取元素在集合中的索引

zrem key member [member ...]
删除一个或多个元素

zremrangebylex key min max
删除索引区间内的元素,根据值的字典顺序计算区间

zremrangebyrank key start stop
删除索引区间内的元素

zremrangebyscore key min max
删除分数区间内的元素

zrevrange key start stop [WITHSCORES]
获取索引(倒序)区间内的元素

zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
获取分数(倒序)区间内的元素

zrevrank key member
获取元素在集合中的倒序的索引,即从右往左计算(或从下往上计算)

zscore key member
获取元素的分数

zunionstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
并集

zscan key cursor [MATCH pattern] [COUNT count]
基于游标遍历集合

排序

sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
可以对List、Set和ZSet里面的值排序。

BY
设置排序的参考键,可以是字符串类型或者Hash类型里面的某个Item键,格式:Hash键名:*->Item键。使用此参数后sort不再依据元素的值来排序,它会将每个元素的值替换成参考键中的第一个
*
,然后获取相应的值并对其排序。如果参考键不存在则默认为0,如果参考键的值一样,再以元素本身的值进行排序。

GET
指定sort命令返回结果包含的键的值,格式:Hash键名:*->Item键,可以指定多个get,其返回的结果一行一个。如果要返回元素的值使用
GET #


对较大数据量排序会严重影响性能,建议:

尽量减少待排序集合中的数据

使用limit来限制获取的数据量

如果要排序的数据量较大,可以考虑使用store参数来缓存结果。

数据过期机制

当客户端主动访问某个key时,redis服务会对找到的key进行超时判断,过期的key此刻会被立刻删除;

redis服务在后台每秒10次执行如下操作:

随机选取20个key校验是否过期

删除所有已发现的键

如果超过25%的键已过期,则重新开始第一步操作。

在过期key不多的情况下redis最多每秒回收200条左右,这种简单的概率算法保证不被访问的数据,在过期之后也会被及时删除。

处理过期键

expire key seconds
设置过期时间,单位秒

expireat key timestamp
设置过期时间,到秒的时间戳

ttl key
查看键的生存时间,单位秒,-1表示永不过期,-2表示已过期

persist key
设置键永不过期;使用set或getset命令为键赋值的时候也会清除原先的过期时间。

pttl key
查看还有多少毫秒过期

pexpire key milliseconds
设置过期时间,单位毫秒

pexpireat key milliseconds-timestamp
设置过期时间,到毫秒的时间戳
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息