上一期我们完成了Redis的安装,本期将开始使用Redis的一些命令和了解数据类型。
基本命令
首先说明,Redis的所有命令大小写不敏感,甚至可以大小写混用。
Get / Del / Type
其他
keys pattern
正则表达式匹配存在的key,例:key *
匹配所有key
type key
查看key类型
del key
删除key
FLUSHDB
清除当前数据库的数据
FLUSHALL
清除所有数据
EXISTS key
判断key是否存在,存在返回1
MOVE key DESTINATION_DATABASE
移动一个key到对应数据库,例:MOVE name 4
移动name到第4个数据库
EXPIRE key time
设定过期时间,例:EXPIRE name 10
name将在10秒后过期
TTL key
即time to
live,查看key的存活时间(多久之后过期)
数据类型
String
Set / Get 方法
set key value
设置一个键值对
setex key seconds value
即set with
expire,设定一个键值对并指定过期时间
setnx key value
即set if not
exist,如果不存在则正常设置,存在则设置失败
mset k1 v1 k2 v2 k3 v3 ...
批量设置
msetnx k1 v1 k2 v2 k3 v3 ...
批量设置,如果有一个键存在则都失败(原子性)
mget k1 k2 k3 ...
批量获取
getset key value
先get再set,不存在返回nil并设置值,存在则返回值并设置新值
即字符串类型,Redis中最基本的数据类型。我们可以通过set key value
来声明一个String,如:
1 | 127.0.0.1:6379> set str hello |
基本命令
APPEND key string
追加字符串(如果不存在则set一个key),例:
1 | 127.0.0.1:6379> append str world |
STRLEN key
获取字符串长度,例:
1 | 127.0.0.1:6379> strlen str |
INCR key
自增(需要字符串是一个数字),例:
1 | 127.0.0.1:6379> set int 0 |
DECR key
自减(需要字符串是一个数字)。
INCRBY key increment
自增相应步长(需要字符串是一个数字),例:
1 | 127.0.0.1:6379> get int |
DECRBY int decrement
自减响应步长(需要字符串是一个数字)。
GETRANGE key start end
截取对应范围的字符串(数字同样可以作为字符串被截取),例:
1 | 127.0.0.1:6379> get name |
SETRANGE key offset value
修改从offset开始value长度的字符串,例:
1 | 127.0.0.1:6379> get name |
List
即列表,本质上是一个链表,因此在两边进行CRUD操作效率最高。可以使用lpush key element
设置一个队列(已存在则会向左添加),例:
1 | 127.0.0.1:6379> lpush li one |
基本命令
lrange key start stop
返回key队列从start到stop的元素,例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
lpush key element
向左添加元素(支持一个或多个),例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
rpush key element
向右添加元素(支持一个或多个),例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
lpop key
移除key左边一个元素,例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
rpop key
移除key右边一个元素,例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
lindex key index
取得对应下标的值,例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
llen key
获取列表长度,例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
lrem key count value
移除列表中count个对应值,例:
1 | 测试一 |
ltrim key start stop
从start到stop截取列表:
1 | 127.0.0.1:6379> lrange li 0 -1 |
rpoplpush source destination
源列表最右边的值移到目标列表最左边,例:
1 | 127.0.0.1:6379> lrange li1 0 -1 |
lset key index value
设置对应下标的值(下标不存在则报错),例:
1 | 127.0.0.1:6379> lrange li 0 -1 |
linsert key before|after pivot value
在对应值的前/后插入新值
1 | 127.0.0.1:6379> lrange li 0 -1 |
Set
即集合,无序且不重复。可以使用sadd key value
创建一个集合,例:
1 | 127.0.0.1:6379> sadd set hello |
基本命令
smembers key
查看所有元素,例:
1 | 127.0.0.1:6379> smembers set |
sismember key member
元素是否存在,存在返回1,不存在返回0.
scard key
返回元素个数,例:
1 | 127.0.0.1:6379> scard set |
srem key member
移除元素,例:
1 | 127.0.0.1:6379> smembers set |
srandmember key [count]
随机返回count个成员,count可不写,代表1个,例:
1 | 127.0.0.1:6379> sadd set one two three four five |
spop key [count]
随机移除count个元素,count可不写,例:
1 | 127.0.0.1:6379> spop set 2 |
smove source destination member
移动源集合指定元素到目标集合,例:
1 | 127.0.0.1:6379> sadd s1 one two three |
sdiff key1 key2 ...
做差集,例:
1 | 127.0.0.1:6379> smembers s1 |
sinter key1 key2 ...
做交集,例:
1 | 127.0.0.1:6379> smembers s1 |
sunion key1 key2 ...
做并集,例:
1 | 127.0.0.1:6379> smembers s1 |
Hash
即哈希,以键值对的形式表示,适合对象的存储。我们可以使用hset key field value
声明一个哈希,例:
1 | 127.0.0.1:6379> hset user name koorye |
基本命令
hget key field
获取一个哈希的值。
hmset key f1 v1 f2 v2 f3 v3 ...
批量设置哈希,例:
1 | 127.0.0.1:6379> hset user name koorye age 19 sex male |
hsetnx key field value
如果不存在则设置。
hmget key f1 f2 f3 ...
批量获取哈希,例:
1 | 127.0.0.1:6379> hmget user name age sex |
hgetall key
获取所有哈希,会返回键值对,例:
1 | 127.0.0.1:6379> hgetall user |
hdel key field
删除哈希的某个字段,例:
1 | 127.0.0.1:6379> hdel user age |
hlen key
获取哈希有几个键值对,例:
1 | 127.0.0.1:6379> hgetall user |
hexists key field
判断哈希中指定字段是否存在,存在返回1,例:
1 | 127.0.0.1:6379> hexists user name |
hkeys key
只获得所有字段,例:
1 | 127.0.0.1:6379> hkeys user |
hvals key
只获得所有值,例:
1 | 127.0.0.1:6379> hvals user |
hincrby key field increment
自增一个数字类型的字段,例:
1 | 127.0.0.1:6379> hset user age 19 |
Zset
即有序集合。可以用zadd key score member
声明一个有序集合,例:
1 | 127.0.0.1:6379> zadd set 1 one |
基本命令
zrange key start stop
获取范围内的元素。
zrangebyscore key min max [withscores]
根据范围排序,withscores可选,是否带上值,例:
1 | 127.0.0.1:6379> zadd salary 4000 adam |
zrevrangebyscore key max min [withscores]
根据范围倒序排序。
zrem
移除元素,例:
1 | 127.0.0.1:6379> zrem salary anna |
zcard key
获取元素个数,例:
1 | 127.0.0.1:6379> zcard salary |
zcount key min max
统计区间内元素个数,例:
1 | 127.0.0.1:6379> zrange salary 0 -1 withscores |