redis基本操作-redis系列教程

来源:互联网 发布:淘宝网店授权书 编辑:程序博客网 时间:2024/06/05 05:12

Redis服务启动之后使用命令行客户端连接,你也可以借助一些Windows下面的客户端(redisdesktop)来操作。

# /usr/local/bin/redis-cli127.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次执行如下操作:
    1. 随机选取20个key校验是否过期
    2. 删除所有已发现的键
    3. 如果超过25%的键已过期,则重新开始第一步操作。
  • 在过期key不多的情况下redis最多每秒回收200条左右,这种简单的概率算法保证不被访问的数据,在过期之后也会被及时删除。

处理过期键

  1. expire key seconds 设置过期时间,单位秒
  2. expireat key timestamp 设置过期时间,到秒的时间戳
  3. ttl key 查看键的生存时间,单位秒,-1表示永不过期,-2表示已过期
  4. persist key 设置键永不过期;使用set或getset命令为键赋值的时候也会清除原先的过期时间。
  5. pttl key 查看还有多少毫秒过期
  6. pexpire key milliseconds 设置过期时间,单位毫秒
  7. pexpireat key milliseconds-timestamp 设置过期时间,到毫秒的时间戳
原创粉丝点击