Redis的客户端操作命令
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis的客户端操作命令相关的知识,希望对你有一定的参考价值。
mysql、Oracle
等关系型数据库我们一般都是通过SQL
语句对数据进行操作,但是非关系型数据库我们一般都是通过相应的客户端命令进行数据操作。
Key
命令 | 描述 |
keys * | 查询当前库的所有键 |
exists <key> | 判断某个键是否存在 |
type <key> | 查看键的类型 |
del <key> | 删除某个键 |
expire <key> <seconds> | 为键值设置过期时间,单位秒。 |
ttl <key> | 查看还有多少秒过期,-1表示永不过期,-2表示已过期 |
dbsize | 查看当前数据库的key的数量 |
flushdb | 清空当前库 |
flushall | 通杀全部库 |
String(字符串)
string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。
string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
命令 | 描述 |
get <key> | 查询指定键对应的值 |
set <key> <value> | 添加键值对 |
append <key> <value> | 将给定的value追加到原值的末尾 |
strlen <key> | 获得值的长度 |
setnx <key> <value> | 只有在 key 不存在时设置 key 的值 |
incr <key> | 将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1
|
decr <key> | 将 key 中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1 |
incrby / decrby <key> <step> | 将 key 中储存的数字值增减。自定义步长(增幅)。 |
mset <key1> <value1> <key2> <value2> ······ | 同时设置一个或多个 key-value对。 |
mget <key1> <key2> <key3> ······ | 同时获取一个或多个 value。 |
msetnx <key1> <value1> <key2> <value2> ······ | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 |
getrange <key> <start> <end> | 获得值的范围,类似java中的substring。 |
setrange <key> <start> <value> | 用value覆写key所储存的字符串值,从起始位置开始。 SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\\x00" )来填充 |
setex <key> <expire> <value> | 设置键值的同时,设置过期时间,单位秒。 |
getset <key> <value> | 以新换旧,设置了新值同时获得旧值。 |
List(列表)
Redis List 是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
命令 | 描述 |
lpush/rpush <key> <value1> <value2> <value3> ······ | 从左边/右边插入一个或多个值 |
lpop/rpop <key> | 从左边/右边吐出一个值, 值在键在,值光键亡。 |
rpoplpush <key1> <key2> | 从key1列表右边吐出一个值,插到key2列表左边 |
lrange <key> <index> | 按照索引下标获得元素(从左到右) |
lindex <key> <index> | 按照索引下标获得元素(从左到右) |
llen <key> | 获得列表长度 |
linsert <key> before|after <value> <newvalue> | 在value的前面(后面)插入newvalue插入值 |
lrem <key> <n> <value> | 从左边删除n个value(从左到右) |
Set(集合)
Redis 的 Set 是 string 类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)
命令 | 描述 |
sadd <key> <value1> <value2> <value3> ······ | 将一个或多个元素加入到集合 key 当中,已经存在于集合的元素将被忽略。 |
smembers <key> | 取出该集合的所有值。 |
sismember <key> <value> | 判断集合key是否为含有该value值,有返回1,没有返回0 |
srem <key> <value1> <value2> ······ | 删除集合中的某个元素。 |
spop <key> | 随机从该集合中吐出一个值 |
srandmember <key> <n> | 随机从该集合中取出n个值。不会从集合中删除 |
sinter <key1> <key2> | 返回两个集合的交集元素。 |
sunion <key1> <key2> | 返回两个集合的并集元素 |
sdiff <key1> <key2> | 返回两个集合的差集元素。 |
Hash(哈希)
Redis hash 是一个键值(key=>value)对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
命令 | 描述 |
hset <key> <field> <value> | 给key集合中的field键赋值value。 |
hget <key1> <field> | 从key1集合field取出value。 |
hmset <key1> <field1> <value1> <field2> <value2> | 批量设置hash的值 |
hexists <key> <field> | 查看哈希表 key 中,给定域 field 是否存在。 |
hkeys <key> | 列出该hash集合的所有field |
hvals <key> | 列出该hash集合的所有value |
hincrby <key> <field> <increment> | 为哈希表 key 中的域 field 的值加上增量 increment。 |
hsetnx <key> <field> <value> | 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 |
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
命令 | 描述 |
zadd <key> <score1> <value1> <score2> <value2> | 将一个或多个 member 元素及其 score 值加入到有序集 key 当中。 |
zrange <key> <start> <stop> [ WITHSCORES ] | 返回有序集 key 中,下标在start,stop之间的元素, 带WITHSCORES,可以让分数一起和值返回到结果集. |
zrangebyscore <key> <min> <max> [WITHSCORES] [limit offset count] | 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。 |
zrevrangebyscore <key> <max> <min> [WITHSCORES] [limit offset count] | 同上,改为从大到小排列. |
zincrby <key> <increment> <value> | 为元素的score加上增量 |
zrem <key> <value> | 删除该集合下,指定值的元素 |
zcount <key> <min> <max> | 统计该集合,分数区间内的元素个数 |
zrank <key> <value> | 返回该值在集合中的排名,从0开始。 |
以上是关于Redis的客户端操作命令的主要内容,如果未能解决你的问题,请参考以下文章