一、Redis的数据类型
类型 | 说明 |
string | 字符串,string类型一个键最多能存最大能存储 512MB |
hash | 哈希,存储键值对集合,比较适合存储对象 |
list | 列表,最多可存储 2^32 - 1 (即4294967295)个元素 |
set | 集合,Set 是 string 类型的无序集合,不允许重复 |
zset | 有序集合,不允许重复,通过双精度的权重分数(score)从小到大排序 |
二、string
2.1 增加数据
1.插入单个数据,语法:set key value
set name xiaoming
2.插入多个数据,语法:mset k1 v1 k2 v2 k3 v3...
mset name xiaofang age 18 gender 1
3.设置过期时间,语法:setex key seconds value
setex name 10 xiaohong # 10秒后销毁
2.2 查询数据
1.查询单个数据,语法:get key value
get name
2.查询多个数据,语法:mget k1 v1 k2 v2 k3 v3...
mget name age gender
2.3 修改数据
1.修改数据,其实就是重新set赋值
set name xiaopan
set name xiaoyao
2.追加数据,语法:append key value,就是在原来的value后再追加字符
append name xiaopan
2.4 删除数据
只要删除键,该记录就会被删除,语法:del key
del name
三、hash
3.1 增加、修改数据
1.增加单个字段,语法:hset key field value
hset user name xiaopan # 增加键user的name属性为xiaopan
2.增加多个字段,语法:hmset key field1 v1 field2 v2...
hmset user name xiaopan age 18 gender 1
3.累加数据,比如说购物车增加商品数量
hincrby user age 2 # age自增2,若age不存在,则创建
修改数据其实就是重新赋值,与上面的语法一样
3.2 查询数据
1.查看指定键的所有字段名,语法:hkeys key
hkeys user
2.查看指定键的某个字段值,语法:hget key field
hget user name
3.查看指定键的多个字段值,语法:hmget key field1,field2...
hmget user name age gender
4.查看一个键有多少个字段
hlen key名
5.获取某个键的所有字段名和字段值
hgetall key名
6.获取某个键的所有字段值
hvals key名
3.3 删除数据
1.删除某个字段,语法:hdel key field
hdel user gender
2.删除整个键:del key
del user
四、list
4.1 增加数据
1.从左边插入,语法:lpush key value1 value2...
lpush list1 a1 a2 a3 # 结果:a3 a2 a1
2.从右边插入,语法:rpush key value1 value2...
rpush list1 b1 b2 b3 # 结果:a3 a2 a1 b1 b2 b3
3.从指定位置插入数据,语法:linsert key before或after 元素 新元素
linsert list1 after a1 0 # 结果:a3 a2 a1 b1 0 b2 b3
4.2 查询数据
查询数据,语法:lrange key start stop
lrange list1 0 -1 # 查询全部数据,-1表示倒数第一个数字
4.3 删除数据
删除指定元素,语法:lrem key count value
count>0从头到尾删,count<0从尾到头删,count=0删除所有
1.添加新元素
rpush list1 a b a b a b # 结果:a3 a2 a0 0 b1 b2 b3 a b a b a b
2.删除数据,删除list1中的b3元素的右边的两个a元素
lrem list1 b3 2 a # 结果:a3 a2 a0 0 b1 b2 b3 b b a b
4.4 修改数据
修改指定位置的数据:语法:lset key index value
lset list1 2 a0 # 把list1下标为2的值改为a0
4.5 截取修剪
截取list中的一部分,语法:ltrim key start stop
ltrim list1 0 5 # 结果:a3 a2 a0 0 b1 b2
五、set
5.1 增加数据
集合没有修改操作
增加数据,语法:sadd key member1 member2...
sadd s1 liu meng li # 创建一个key为s1的集合,有三个不重复元素
5.2 查询数据
查询数据,语法:smembers key
smembers s1 # 结果:liu meng li
5.3 删除数据
删除数据,语法:srem key
srem s1 liu # 结果 meng li
六、zset
6.1 增加数据
增加数据,语法:zadd key score1 member1 score2 member2 ...
创建key为z1的zset,元素a1、a2、a3的权重分别为1、2、3
zadd z1 1 a1 2 a2 3 a3
6.2 删除数据
1.删除指定元素,语法:zrem key member1 member2 ...
zrem z1 a3 # 把a3删除了
2.按权重范围删除,语法:zremrangebyscore key min max
zremrangebyscore z1 2 3 # 把权重在2~3之间的元素删除
6.3 查询数据
1.查询指定范围内的元素,语法:zrange key start stop
zrange z1 0 -1 # 查询全部元素,-1表示倒数第一个元素
2.查询指定权重范围内的元素,语法:zrangebyscore key min max
zrangebyscore z1 2 3 # 查询权重在2~3之间的元素
3.查询某个元素的权重
zscore z1 a1 # 查询a1的权重
七、键操作
1.查看键,语法:keys 正则表达式
keys * # 查看所有键
keys a* # 查看以a开头的键
2.查看键是否存在,语法:exists key
exists list1 # 查看list1这个键是否存在
3.查看键的类型,语法:type key
type list1 # 查看list1的类型
4.删除键,语法:del key1 key2 ...
del list1 z1 s1
5.设置键过期时间,语法:expire key seconds
expire name 10 # 10秒钟后过期
6.查看键过期前剩余时间,语法:ttl key
ttl list1 # 查看list1还有多少时间
八、操作对比
操作\类型 | string | hash | list | set | zset |
增加/修改 | set、setex、mset、append | hset、hmset | lpush、rpush、linsert、lset | sadd | zadd |
删除 | del | hdel | lrem | srem | zrem、zremrangebyscore |
查询 | get、mget | hkeys、hvals、hget、hmget | lrange | smenbers | zrange、zrangebyscore、zscore |
键操作:keys、exists、type、del、expire、ttl
九、批量删除
如果是Linux系统,可以借助xargs
命令。先通过redis-cli连接数据库并且查询要删除的key,然后通过管道传给xargs,依次调用redis-cli执行del
操作
例如,删除第3号库的monitor:transfer:price*
匹配到的key,下面两种写法都行,但推荐--scan
,因为不阻塞
redis-cli -n 3 --raw --scan --pattern "monitor:transfer:price1*" | xargs -I {} redis-cli -n 3 del "{}"
redis-cli -n 3 keys 'monitor:transfer:price*' | xargs redis-cli -n 3 del
但是Windows系统没有xargs命名,那可以借助Python脚本
from redis import Redis
redis_cli = Redis(host="localhost", port=6379, username="", password="", db=0)
pipe_line = redis_cli.pipeline()
key_res = pipe_line.keys("monitor:transfer:price*").execute()
for k in key_res[0]:
pipe_line.delete(k)
pipe_line.execute()
redis_cli.close()