1 安装与启动
1.1 编译安装
# 下载安装包
https://download.redis.io/releases/
# 解压后编译
tar -zxvf 包名
cd 解压后文件夹
make
1.2 启动
# 解压文件夹下
# 修改配置支持后台启动
vim redis.conf
修改 daemonize yes
# 解压文件夹/src/
# 启动服务
./redis-server ../redis.conf
# 连接
./redis-cli
# 关闭单实例服务
shutdown
2 操作
2.1 key操作
# 操作具有原子性,redis是单线程+多路IO复用,redis执行命令是单线程,IO多线程部分只用在网络数据读写和协议解析,默认没有开启
# 查看所有key
keys *
# 设置值
set key value
# 查看值
get key
# 查看类型
type key
# 删除key
del key
unlink key # 非阻塞删除
# 设置过期时间
expire key time
# 查看过期时间
ttl key # -2已过期,-1永不过期
# 查看当前数据库的key数量
dbsize
# 切换数据库,默认0号库
select 数据库
# 清空当前库
flushdb
# 清空全部库
fulshall
2.2 数据类型
2.2.1 字符串类型
# 一个value值最多512M
# 数据结构为简单动态字符串,最大长度为512M。字符串长度小于1M时,加倍扩容,超过1M时,每次扩容增加1M
# 设置值
set key value
# 获取值
get key
# 追加值
append key value
# 获取值的长度
strlen key
# 仅在key不存在时设置值
setnx key value
# 将key中存储的数字值增加1
incr key
# 将key中存储的数字值减少1
decr key
# 增减固定值
incrby key num
decrby key num
# 设置多个值
mset key1 value1 key2 value2 ...
# 设置多个值,任何一个存在,设置不成功
msetnx key1 value1 key2 value2 ...
# 获取多个值
mget key1 key2 key3
# 获取值范围的值
getrange key start end # getrange test 0 3 相当于test[0:4]
# 覆盖值,从指定位开始,替换长度和value相同的值
setrange key start value
# 设置过期时间
setex key time value # set t1 10 1 # 设置值为1,过期时间为10s
# 以新值换旧值
getset key newvalue # 获取了旧值,并覆盖了旧值
2.2.2 list
# 单键多值
# 值的数据结构是快速链表(双向链表),多块连续的内存(压缩列表之间)使用指针相连,相当于数组加指针,数组与数组之间加指针相连。两端操作性能高,索引下标操作中间性能不高
# 从左边/右边插入一个或多个值
lpush key v1 v2 .. # 相当于依次 insert(0, v)
rpush key v1 v2 .. # 相当于依次 append(v)
# 从左边/右边取出值,值取光键销毁
lpop key
rpop key
# 查看值
lrange key start end
# 查看全部值
lrange key 0 -1
# 从key1键右边取1个值放到key2的左边
rpoplpush key1 key2
# 获取指定位置值
lindex key index
# 查看列表长度
llen key
# 在第一个value前/后面插入值
linsert key before value newvalue
linsert key after value newvalue
# 从左边删除n个指定value
lrem key n value
# 替换指定下标的值
lset key index value
2.2.3 set
# 自动去重,string类型的集合,无序
# 数据结构是字典,用哈希表实现,HashSet内部实现是HashMap,所有value指向同一个对象
# 设置或添加
sadd key value1 value2 ..
# 查看
smembers key
# 判断集合中是否包含指定值
sismembe