一、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()