day03302redis悲观锁乐观锁
reids
nosql ont only sql
当数据量庞大,请求变得越来越多,仅仅mysql 是无法解决所有的压力,
redis 五种基本类型 string list Hash set zset
nosql 没有固定查询语言
-
redis KVj键值对型 缓存
-
MongoDB 文档型 基于分布式文件存储
-
Hbase 大数据 列存储型
-
Noe4j 图片关系 (社交网络,广告推荐)
redis 内存存储,持久化 rdb aof
每秒读8万次 写11万次
Linux下安装redis
-
官网下载gz文件
-
上传到linux服务器
-
ls 查看上传的安装包
-
mv gz文件名 opt 移动安装包到opt目录
-
cd opt 进入opt 文件 ls 查看
-
tar -zxvf 文件名gz 解压安装包
-
cd redis-6.0.10 进入安装文件
-
yum install gcc-c++ 安装gcc环境 只需要支持编译c++,那么我就只装一个c++的gcc前端
-
make 命令配置所有所需要的文件
-
如果make报错
-
是因为gcc版本过低(GCC是C++的运行环境,是因为redis就是c语言写的)
更新gcc版本:
//升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils //临时将此时的gcc版本改为9
scl enable devtoolset-9 bash //永久改变
.最后重新make
-
-
make install 检查 输出install make[1] src ....安装成功
-
redis 默认安装路径 usr local bin
-
创建新文件夹mkdir new 赋值redis.conf 到new cp /opt/redis-6.0.10/redis.conf new
-
vim redis.conf 修改启动文件 daemonize 配置 改为yes 后台方式启动 光标移动到修改位置 i 命令进入INSTER模式 修改文本
-
esc 退出模式 :x 保存退出
pwd 查看当前目录路径
-
redis-server redis.conf
-
redis-cli 连接redis
-
select num 切换num库
redis 基本命令
STRING类型操作
-
flushall 清空所有库数据 flushdb 清空当前库
-
set key get key append key 追加 keys * 查看所有key
-
exists key 判断key是否存在 move key 移出 键值对
-
expire key second 设置second 秒过期 ttl key 查看过期时间
-
type key 查看key类型
-
incr key 自增1 decr key 自减1 incrby num 设置增量
LIST类型操作 有序可重复集合
list 可当作队列 堆栈
lpush list one 向list 中添加元素one lpop list 从list中取出 后进先出 lpush + rpop 可实现后进后出 取出的元素消失
lrange list 0 -1 查询0 到结束 list 中的所有元素
SET类型操作 无序不重复集合
sadd myset 00 增加元素在set中 smembers myset 查看所有值
srandmember myset 拿到set中的随机一个元素 spop 随机取出元素 取出后元素消失
Hash 类型操作
hset myhash key value , hget my hash key 存取 对象为 k v 键值对
hgetall myhash 拿到所有 键值对
ZSET类型操作 有序不重复
zadd myzset score one 向myzset中添加 序号为score 的元素 one
实现排序 zrangebyscore myzset -inf +inf 小到大排序
查询所有元素 zrange myzset 0 -1
悲观硕 和乐观锁
-
悲观锁 只要调用都要经过锁
-
乐观锁 调用不会上锁 只在更新时判断version标签是否被修改过 未修改将新的version与数据一起更新到库 修改过重新获取 更新
-
redis 中用watch key 监视 键值对的更新
-
eg: 同时开两个cli 连接操作同一个对象 cli 1 执行 set money 100 ,set out 0 watch money 监视 money 变化 decrby money 10 , incrby out 10
在 cli2 修改money set money 1000
回到cli1 执行exec 提交数据失败 unwatch 解除锁监视 watch money 重新上锁监视 再操作
-