目录
一、常见的操作命令
1、关于数据库的命令
命令 | 格式 | 说明 |
---|---|---|
select | select 数据库下标 | 在redis中,默认有16个数据库,其下标从0开始,初始默认使用 0 号库。通过select命令可以切换数据库。 |
dbsize | dbsize | 查看当前数据库的key的数量 |
flushdb | flushdb | 清空当前数据库 |
flushall | flushall | 清空全部库 |
2、通用的命令
命令 | 格式 | 说明 |
---|---|---|
set | set key value | 添加key |
get | get key | 查询key |
clear | clear | 清空屏幕 |
3、关于key的命令
命令 | 说明 |
---|---|
key * | 查询当前数据库中的所有key |
exist keyname | 判断某个key是否存在 |
move key db | 将指定key移动到另一数据库 |
expire key 秒 | 给指定的key设置过期时间 |
ttl key | 查看key还有多长时间过期,-1代表永不过期,-2代表已经过期 |
type key | 查看key的类型 |
persist key | 切换key从时效性到永久性 |
rename key newname | 给key改名 |
二、redis的数据类型
1、字符串string
string是redis的最基本的类型,一个key对应一个value。redis的string可以包含任何数据,如:jpg图片或序列化的对象。一个redis中字符串value最多可以是512M。
命令 | 示例 | 说明 |
---|---|---|
set key value | set username tom | 设置key |
get key | get username | 获取key |
del key | del username | 删除指定key |
append key value | append tom 123 | 在指定key后面拼接内容 |
strlen key | strlen username | 得到指定key的长度 |
示例:
如果string存储的是纯数字,可以使用以下命令:
命令 | 示例 | 说明 |
---|---|---|
incr key | incr num | 给key值每次加1 |
incrby key increment | incrby num 3 | 给key值每次增加指定步长 |
decr key | decr num | 给key值每次减1 |
dectby key increment | decrby num 4 | 给key值每次减去指定步长 |
示例:
此外,还有一些其他的操作命令
命令 | 示例 | 说明 |
---|---|---|
getrange key start end | getrange message 0 6 | 获取key的指定范围内的值。如果区间范围指定0~ -1,则代表全部内容 |
setrange key offset value | setrange message 6 redis | 设置key指定位置的值 |
setex key seconds value | setex name 20 tom | 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位) |
ttl key | ttl name | 当设置了key的过期时间后,使用此命令查看key的剩余存活时间 |
setnx key value | setnx message hello | 当key不存在时设置key的值 |
mset key value | mset k1 v1 k2 v2 | 同时设置一个或多个 key-value 对 |
mget key key ... | mget k1 k2 | 获取所有(一个或多个)给定 key 的值 |
msetnx | mset k1 v1 k2 v2 | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在 |
getset | getset message redis | 将给定 key 的值设为 value ,并返回 key 的旧值(old value) |
示例:
2、列表list
list是一个字符串链表,左右都可插入元素。如果键不存在,则创建新的链表,如果键存在,则新增内容。当链表中所有元素被移除,对应的键也就消失了。
命令 | 示例 | 说明 |
---|---|---|
lpush/rpush key value1 value2 | lpush list 6 7 8 | 将一个或多个值插入到列表头部 |
lrange key start stop | lrange list 0 -1 | 获取列表指定范围内的元素 |
lpop/rpop key | lpop list | lpop移出并获取列表的第一个元素;rpop移除列表的最后一个元素,返回值为移除的元素。 |
lindex key index | lindex list 2 | 通过索引获取列表中的元素 |
llen key | llen list | 获取列表长度 |
lrem key count value | lrem list 2 4 | 移除列表元素 |
ltrim key start stop | ltrim list 0 3 | 截取指定范围的值后再赋给key |
rpoplpush source destination | rpoplpush list list1 | 移除列表的最后一个元素,并将该元素添加到另一个列表并返回 |
lset key index value | lset list 2 5 | 通过索引设置列表元素的值 |
linsert key before/after privot value | linnsert list before 5 4 | 在列表的元素前或者后插入元素 |
示例:
3、集合set
set是string类型的无序集合,这就意味着集合中不能出现重复的数据。
命令 | 示例 | 说明 |
---|---|---|
sadd key value1 value2 | sadd set name age | 向集合添加一个或多个成员 |
smembers key | smembers set | 返回集合中的所有成员 |
sismember key member | sismemebr set school | 判断 member 元素是否是集合 key 的成员 |
scard key | scard set | 获取集合的成员数 |
srem key member1 member2 | srem set school | 移除集合中一个或多个成员 |
spop key | spop set | 移除并返回集合中的一个随机元素 |
smove source destination member | smove set set1 name | 将 member 元素从 source 集合移动到 destination 集合 |
srandmember key count | srandmember set 2 | 返回集合中一个或多个随机数 |
sscan key cursor | sscan set 0 match a* | 迭代集合中的元素 |
示例:
此外,对集合还有一些交差并的操作
命令 | 示例 | 说明 |
---|---|---|
sinter key1 key2 | sinter set1 set2 | 返回给定所有集合的交集 |
sinterstore destination key1 key2 | sinterstore set3 set1 set 2 | 返回给定所有集合的交集并存储在 destination 中 |
sdiff key1 key2 | sdiff set1 set2 | 返回第一个集合与其他集合之间的差集。 |
sdiffstore destination key1 key2 | sdiffstore set4 set1 set 2 | 返回给定集合的差集并存储在 destination 中 |
sunion key1 key2 | sunion set1 set2 | 返回所有给定集合的并集 |
sunionstore destination key1 key2 | sunionstore set5 set1 set 2 | 所有给定集合的并集存储在 destination 集合中 |
示例:
4、哈希hash
hash是一个键值对集合,可以存储对象,类似于Java里的map。
命令 | 示例 | 说明 |
---|---|---|
hset key fileld value | hset hash name tom | 将哈希表 key 中的字段 field 的值设为 value 。 |
hmset key field1 value1 field2 value2 | hmset hash age 20 sex male | 同时将多个 field-value (域-值)对设置到哈希表 key 中 |
hget key field | hget name | 获取存储在哈希表中指定字段的值。 |
hmget key field1 field2 | hmget age sex | 获取所有给定字段的值 |
hgetall key | hgetall hash | 获取在哈希表中指定 key 的所有字段和值 |
hkeys key | hkeys hash | 获取所有哈希表中的字段 |
hvals key | hvals hash | 获取哈希表中所有值 |
hlen key | hlen hash | 获取哈希表中字段的数量 |
hexists key field | hexists hash address | 查看哈希表 key 中,指定的字段是否存在 |
hdel key field1 field2 | hdel hash age sex | 删除一个或多个哈希表字段 |
hincrby key field increment | hincrby hash age 20 | 为哈希表 key 中的指定字段的整数值加上增量 increment |
hincrbyfloat key field increment | hincrbybyfloat hash salary 500 | 为哈希表 key 中的指定字段的浮点数值加上增量 increment |
示例:
5、有序集合zset
zset和set是string类型的无序集合,且都不允许重复的key存在。
命令 | 示例 | 说明 |
---|---|---|
zadd key score1 member1 score2 member2 | zadd zset 60 v1 70 v2 | 向有序集合添加一个或多个成员,或者更新已存在成员的分数 |
zrange key start stop | zrange zset 0 -1 | 通过索引区间返回有序集合指定区间内的成员 |
zrangebyscore key min max | zrangebyscore zset 60 90 | 通过分数返回有序集合指定区间内的成员 |
zrem key member1 member2 | zrem zset v5 | 移除有序集合中的一个或多个成员 |
zcard key | zcard zset | 获取有序集合的成员数 |
zcount key min max | zcount zset 60 80 | 计算在有序集合中指定区间分数的成员数 |
zscore key member | zscore zset v5 | 返回有序集中成员的分数值 |
zrank key member | zrank zset v3 | 返回有序集合中指定成员的索引 |
zrevrank key memeber | zrevrank zset v3 | 返回有序集合中指定成员的排名,有序集成员按分数值递减(从大到小)排序 |
zrevrange key start stop | zrevrange zset 0 -1 | 返回有序集中指定区间内的成员,通过索引,分数从高到低 |
zrevrangebyscore key max min | zrevrangebyscore zset 90 70 | 返回有序集中指定分数区间内的成员,分数从高到低排序 |
示例: