您现在的位置是:首页 > 技术笔记 > 数据库数据库

redis基本操作

2019-08-09【数据库】人已围观

简介redis基础命令

Redis服务启动之后使用命令行客户端连接:
 
# /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 设置过期时间,到毫秒的时间戳

  • 微信扫一扫~
  • 支付宝扫一扫~

很赞哦! ()

上一篇:返回列表

下一篇:返回列表

相关文章

文章评论

点击排行

redis基本操作

本站推荐

猜你喜欢