一、基本操作
- 基本命令
# 查看数据库信息
info
# 选择数据库
select 0
# 查看所有的键
keys *
# 查看test关键字的键
keys *test*
# 查看key的ttl
ttl key
二、数据类型操作
- string
- 基本命令
# 添加
set key value
# 批量添加
mset key1 value1 key2 value2
# 查看
get key
# 批量查看
mget key1 key2
# 存在就不添加,否则添加
setnx key value
# 设置过期时间
setex key seconds value
# 以毫秒为单位设置过期时间
psetex key milliseconds value
# 自增的前提都要是整型或者浮点型.并且整型不能自增浮点数,浮点型不能自增整数
# 自增1
incr key
# 自定义步长自增
incrby key 2
# 浮点数自增
incrbyfloat key 0.5
# 字符串追加
append key value
# 删除
del key
- hash
- 基本命令
# 添加
hset hashkey field1 value1 field2 value2
# 查看hashkey对应的field
hget hashkey field
# 查看hashkey所有的field
hgetall hashkey
# 删除一个或多个
hdel hashkey field1 field2
# hash中属性整数自增
hincrby hashkey field increment
# hash中属性浮点数自增
hincrbyfloat hashkey field increment
- list
- 基本命令
# 左边插入
lpush list value1 value2 value3
# 右边插入
rpush list value1 value2 value3
# 左边弹出count个
lpop list count
# 右边弹出count个
rpop list count
# 查看list个数
llen list
# 查看起始位置的list元素
lrange list begin end
- set
# 添加
sadd set value1 value2 value3
# 随机移除一个元素
spop set
# 移除指定元素
srem set value1
# 查看所有成员
smembers set
- zset
- zset通过分配权重指定顺序
# 添加
zadd zset score1 value1 score2 value2 score3 value3
# 移除
zrem key value
# 返回有序集中指定区间内的成员,通过索引,分数从高到低
ZREVRANGE key start stop [WITHSCORES]
二、事务
redis是单线程模式,但是不代表客户端只能与服务端建立一个连接,可以建立多个socket连接.将命令提交给redis后,redis会将命令放到队列中,单线程依次执行.
- 性质
- redis是单线程,不具有隔离级别
- 事务多条语句缓存在server端
- 过程为事务开始、命令入队、事务执行
- 使用流程
三、pipeline
如果有多条语句需要在redis执行,那么将会不断建立连接,会消耗网络连接的时间
就算使用连接池改善,因为redis是单线程执行的,就算省掉了建立连接的过程,redis在单线程中也只能执行一条命令,无法解决根本问题.
- 性质
- pipeline中的指令缓存在client端,本次pipeline执行的结果全部缓存在server端,一并返回
- pipeline的参数个数默认为53个,到达53个后会提交本次pipeline
- pipeline缓冲的指令只是会依次执行,但是不能保证原子性,如果执行中间某一个指令发生异常,将会继续执行后续的指令
- pipeline只能操作一个redis实例,集群多个写实例不能对pipeline中的指令进行分配