四、Redis命令
1. key的操作
在redis里面,除了”\n”和空格 不能作为名字的组成部分,其他字符都可以作为key的名字的组成部分。名称的长度不限制。
常见命令列表:
命令 | 解释 |
---|---|
exists key | 测试指定key是否存在 |
del key1 key2 … keyN | 删除给定的key |
type key | 返回给定key的value类型 |
keys pattern | 返回匹配指定模式的所有key |
rename oldkey newkey | 改名字 |
dbsize | 返回当前数据库的key数量 |
expire key seconds | 为key指定过期时间 |
ttl key | 返回key的剩余过去秒数 |
select db-index | 选择指定索引的数据库,默认redis支持16个数据库,0-15 |
move key db-index | 将key从当前数据库移动到指定数据库 |
flushdb | 删除当前数据库中所有key |
flushall | 删除所有数据库中的所有key |
2. String数据类型
- String数据类型是redis最基本的数据类型
- Redis的string可以包含任意数据,包括图片或者序列化后的对象
- 单个value值最大上限是1GB
常见命令操作列表:
命令 | 解释 |
---|---|
set key value | 设置key对应的值为string类型的 value |
mset key1 k![]() | |
value1 … keyN valueN | 一次设置多个key/value值 |
mget key1 key2 … keyN | 一次获取多个key |
incr key | 对key的值做加加操作,并返回新值;类似i++ |
decr key | 对key的值做减减操作,并返回新值 |
incrby key integer | 同incr, 加上指定值 |
decrby key integer | 同decr,减去指定值 |
append key value | 给指定key的字符串值追加value |
substr key start end | 返回截取过的key的字符串值 |
3. List数据类型
List数据类型 实际上就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加,删除元素。这使得list既可以作为栈来使用,也可以作为队列来使用。
List操作命令列表:
命令 | 解释 |
---|---|
lpush key string | 在key对应list的头部添加字符串元素 |
rpop key | 从list的尾部删除元素,并返回删除元素 |
llen key 返回 key | 对应list的长度,key 不存在返回0,如果可以对应类型不是list 返回错误 |
lrange key start end | 返回指定区域内的元素,下标从0开始默认list是栈的结构,先进后出;例如: lrang list1 3 6 |
rpush key string | 在key对应list的尾部添加字符串元素 |
lpop key | 从list的头部删除元素,并返回删除元素 |
ltrim key start end | 截取list,保留知道指定区域内元素。 |
4. Set数据类型
- redis的set数据类型是String类型的无序集合。
- set最大存储2的32次方-1 个元素。
- set集合中不能有重复的数据,跟list数据类型不同。
- 集合的常见操作有,增加,删除,还有比较重要的操作:交集(intersection),并集(union),差集(difference)。
Set 数据类型的应用场景:
朋友圈的可见权限,或者社交应用(sns)中的朋友推荐
Tom的朋友圈:jerry,susan,anna,peter,john
Mike 的朋友圈:willian,evan,george,peppa,peter,john
Set数据类型的常见操作:
命令 | 解释 |
---|---|
sadd key member | 添加一个string元素到key对应的set集合中,成功返回1,如果元素已经在集合中,返回0,如果key对应的set不存在,返回错误 |
srem key member [member] | 从key对应set中移除给定元素,成功返回1 |
smove p1 p2 member | 从p1对应set中移除member并添加到p2对应set中 |
scard key | 返回set的元素个数 |
sismember key member | 判断member是否在set中 |
sinter key1 key2 … keyN | 返回所有给定key的交集 |
sunion key1 key2 … keyN | 返回所有给定key的并集 |
sdiff key1 key2 … keyN | 返回所有给定key的差集 |
smembers key | 返回key对应set的所有元素,结果是无序的 |
5. Sorted Set 排序集合类型
和set数据类型一样,Sorted Set也是string数据类型的集合,不同的是每一个元素都会关联一个权。通过权值可以有序的获取集合中的元素。
Sorted Set 常用命令列表:
命令 | 解释 |
---|---|
zadd key score memeber | 添加元素到集合,元素在集合中存在则更新对应score |
zrem key member | 删除指定元素,成功返回1,如果元素不存在就返回0 |
zincrby key incr member | 按照incr幅度增加对应member的score值,返回新score值 |
zrank key memeber | 返回指定元素在集合中的排名(下标,从0开始计数),集合中元素是按score从小到大排序。 |
zrevrank key member | 同上,但是集合中元素是按score从大到小排序 |
zrange key start end | 类似lrange操作从集合中去指定区间的元素。返回的是有序结果 |
zrevrange key start end | 同上,返回结果是按score逆序排列 |
zcard key | 返回结合中元素的个数 |
zscore key element | 返回指定元素对应的score |
zremrangebyrank key min max | 删除集合中排名在指定区间的元素(权值从小到达排序) |
关于元素是否可以重复:
- List:可以
- Set:不可以
- Sorted Set:不可以
6. Hash 数据类型
Hash数据类型存储的数据与mysql数据库中存储的一条记录“非常相似”
通过一个模拟mysql的表结构来演示一下 hash类型数据操作。
mysql的用户表:
id | username | password |
---|---|---|
1 | jerry | 123 |
2 | susan | 456 |
Hash类型常用命令列表:
命令 | 解释 |
---|---|
hset key field value | 设置hash field 为指定值,如果key不存在,则先创建 |
hget key field | 获取指定的hash field |
hmget key field1 … fieldN | 获取全部指定的hash field |
hmset key field1 value1 … fieldN | 同时设置hash的多个field |
hincrby key field integer | 将指定的hash filed 加上给定的值 |
hexists key field | 测试指定的field是否存在 |
hdel key field | 删除指定的hash filed |
hlen key | 返回指定hash的field数量 |
hkeys key | 返回hash的所有field |
hvals key | 返回hash的所有value |
hgetall key | 返回hash的所有field和value |