Redis常用操作命令

  • 作者:lwj
  • 分类:数据库
  • 发表日期:2019-12-22 11:01:46
  • 阅读(697)
  • 评论(0)

Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库

操作key

新增键:set keyName "value"

删除键:del keyName ==> 返回删除的key数量

序列化键:dump keyName ==> 返回序列化之后的值

检查键存在:exists keyName ==>返回1(存在) or 0(不存在)

键设置过期:expire keyName seconds ==>返回1(成功) or 0(失败)[pexpire毫秒]

设置过期时间戳:expireat keyName timestamp ==>返回1(成功) or 0(失败)[pexpireat毫秒]

查找给定模式键:keys pattern ==>返回key名 pattern: 查找模式

切换到指定db:select n ==>切换到数据库n

移动key到指定db:move keyName n ==>移动key到n数据库(0成功)

移除key过期时间:persist keyName ==>1成功0失败

查看key过期时间:ttl keyName ==>剩余过期时间(-1为永久[pttl毫米])

返回一个随机key:randomkey ==>返回key 库为空则返回nil

修改key名称:rename keyName newkey ==>修改key名, 若新key存在则覆盖

不存在修改key名:renamenx keyName newkey ==>新的newkey不存在,则修改key名成功

删除库中所有key:flushdb ==>返回ok

操作value

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

查看value的类型: type keyname ==>string等


字符串(String)

string类型是Redis最基本的数据类型, 一个 key 对应一个 value, string 类型的值最大能存储 512MB

set key value    设置指定key的value

get key   获取key的值

getrange key start end   截取字符串(start和end为偏移量 int类型)

getset key newValue    修改key的value,并返回旧value 无旧value则返回nil

mget key1 key2 ...    获取key1, key2...等键的value

setex key seconds value    将value关联到key并设置过期时间, 存在旧value则替换value[p毫秒]

setnx key value key   不存在时设置key的value(成功1),若存在则失败(0)

strlen key  获取字符串的长度

mset key1 value key2 value2  设置多个键值对

incr key  给指定的key储存的数值+1,key不存在初始化为0在+1

incrby key int  给value加上指定的增量, key不存在则初始化后在增量

incrbyfloat key flost  给value加上指定的浮点增量, key不存在则初始化后在浮点增量

decr key  给指定的key储存的数值-1,key不存在初始化为0在-1

decrby key int  给value减去指定的减量值, key不存在则初始化后在减量

append key value  给key的value追加指定值,key不存在则设定key(set功能)


哈希(Hash)

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)

hset hash field value 设置哈希表hash中field字段的值为value

hdel hash field 删除哈希表hash中的fieldi段

hexist hash field 判断哈希表hash中是否存在给定字段,存在返回1 不存在返回0

hget hash field 获取哈希表hash中是否存在field字段, 存在返回value,不存在返回nil

hgetall hash 获取哈希表hash中的所有字段与字段值,key不存在返回空列表

hincrby hash field int 对哈希表hash中fiels字段加减int,哈希表或field不存在则初始化并加减

hincrbyfloat hash field float 对哈希表hash中field字段加减float

hkeys hash 获取哈希表hash中的所有键并返回列表 or 空列表

hlen hash 获取哈希表hash中的键的数量,哈希表不存在则返回0

hmget hash field1 field2 获取哈希表hash中field1 field2等字段的value

hmset hash field1 value1... 设置哈希表hash中field1,field2等字段的value, 若存在则覆盖

hsetnx hash field value 字段fidle不存在时,设置哈希表hash中field字段的value

hvals hash 获取哈希表hash中的所有值


列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)

blpop list timeout 弹出并获取list中第一个元素与元素所属的key,失败or堵塞至超时

brpop list timeout 弹出并获取list中最后的元素与元素所属的key,失败or堵塞至超时

brpoplpush list1 list2 timeout 弹出list1中的最后元素并插入到list2的头部,失败o堵塞至超时

lindex list index 通过索引(index)获取列表(list)中的元素, 索引不再范围则返回nli

linsert list before|after pivot value 插入值(value)到列表(list)中元素(pivot)之前(before)或之后(after)

llen list 返回列表(list)的长度

lpop list 移除并返回列表(list)的第一个元素

lpush list value1, value2 添加多个值(value)到列表(list)中,key存在且不是list类型报错,key不 存在则创建空list并执行, 执行成功返回list长度

lpushx list value1, value2 与lpush功能一样, 但只有列表存在时才执行成功否则操作无效

lrannge list start end 返回列表(list)中索引start到end范围的元素

lrem list index value 从索引index开始移除列表(list)中值为value的元素,count>0表头向表尾,count<0从表尾到头, count=则移除所有与value相同的值

lset list index value 通过索引(index)插入值(value)到列表(list)中,索引超范围或空list则返回错误

ltrim list start stop 移除列表(list)中索引start和索引stop之外的所有元素

rpop list 移除列表(list)中最后一位元素

rpoplpush list1 list2 移除列表1(list1)的最后一个元素并添加到列表2(list2)中并返回

rpush list value1 value2 添加value1 value2等到列表(list)中

rpushx list value 添加value到已存在列表list中去


集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)

sadd set value1 value2 集合中添加元素value1和value2

scard set 获取集合中元素的数量

sdiff set1 set2 set3 获取集合set1中set2和set3的元素差集(1存在2、3不存在的)

sdiffstore set set1 set2 set3 获取集合set1中set2和set3的元素差集并插入到set中,set存在则覆盖

sinter set1 set2 set3 获取集合set1 set2 set3中元素的交集并返回

sinterstore set set1 set2 set3 获取集合set1 set2 set3中元素的交集并插入到set,set存在则覆盖

sismembers set value 判断元素value是否存在集合(set)中,存在返回1 不存在返回0

smembers set 返回集合(set)中的所有成员

smove set1 set2 value 移动set2中的成员value到set1中,成员不存在返回0,set1承载则覆盖

spop set 随机移除是集合(set)中的一个成员

srandmember set count 从集合(set)中随机返回count个元素

srem set value1 value2... 从集合(set)中移除value1和value2...等元素

sunion set1 set2 返回集合set1和set2的并集

sunionstore set set1 set2 获取集合set1和set2的并集并存储到集合set中,诺存在数据则覆盖

sscan set count h* 迭代集合中键的元素


有序集合(sorted set)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序

有序集合的成员是唯一的,但分数(score)却可以重复

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)

觉得不错,支持一下!

提交评论

您尚未登录,登录之后方可评论~ 登录 or 注册

评论列表

暂无评论
返回顶部

建议反馈

1. 可在博文底部留言评论

2. 发邮件到i_suichuan@163.com