1. 用docker安装redis
# 查找redis版本
docker search redis
# 安装最近的redis版本
docker pull redis:latest
# 启动redis
# -itd 启动交户方式, 在后台运行
# -p 6379:6379:映射容器服务的 6379 端口到宿主机的 6379 端口。外部可以直接通过宿主机ip:6379 访问到 Redis 的服务。
docker run -itd --name redis-test -p 6379:6379 redis
# 进入redis容器
docker exec -it redis-test /bin/bash
# 客户段连接redis
redis-cli
# 退出
exit
2. redis 配置
# 查看所有 配置
CONFIG GET *
# 修改配置
CONFIG SET item itemvalue
3. redis 操作
# 启动
redis-cli -h host -p port -a password
# 有16数据库,默认用第一个数据库 ,可以用select切换
# 查看所有key
keys *
# 1 String
set testk "test"
get testk
del testk
# 2 List
lpush test str1
lpush test str2
lrange test 0 -1
lpop key # 移出并获取列表的第一个元素
rpop key # 移除列表的最后一个元素,返回值为移除的元素
# 3 Set集合
# 添加一个 string 元素到 key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
sadd key member
# 查看set集合里面的内容
smemeber key
# 4 hash
hmset testk str1 "str1test" str2 "str2test"
hget testk str1
# 5 zset (有序集合)
# Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
# 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
# zset的成员是唯一的,但分数(score)却可以重复
zadd key 0 str1
zadd key 1 str2
zadd key 0 str3
zrange key 0 -1
# 列出score 0 ~ 1000 的
zrangebyscope key 0 1000
# 列出所有
zrange key 0 -1
# 设置过期时间,查看过期时间
expire key seconds
expire key timestamp
ttl key
pttl key
# 将key 移动到指定数据库
move key dbNumber
# 随机返回当前库的一个key
randomkey
# 重命名key
rename key newkey
# 查看类型
type key
# 仅当newkey不存在时,将key改为newkey
renamenx key newkey
# 在key 后天添加内容
append key value
# 开启事务
multi
# 执行事务
exce
# 取消事务
discard
4. 异常
单条保证原子性的,事务是不保证原子性的
- 编译时异常(都不会成功)
multi
set k1 v1
getset k1
set k2 v2
- 运行时异常
multi
set k1 v1
incr k1
set k2 v2
exec
5. 监控(watch)
- 悲观锁,认为什么时候都会出问题, 无论什么时候都会加锁
- 乐观锁,认为什么时候都不会出问题,所有不会上锁!(Redis可以做乐观锁)
set money 100
watch money
multi
decrby money 20
exec # money 在其他线程中有改动,事物则不会执行成功
unwatch #(如果事务执行失败,则先解锁,再监视)
# 修复 文件
redis-check-aof --fix appendonly.aof
1510

被折叠的 条评论
为什么被折叠?



