发表于: 2021-12-10 21:54:07
0 759
学习非关系型数据库
非关系数据库的特点:
1.方便扩展(数据之间没有关系,很好扩展)
2.大数据量高性能(redis 一秒能写8万次,读11万次,细粒度缓存,性能高)
3.数据类型事多样型的(不需要事先设计数据库,随取随用)
非关系型数据库
不仅仅是数据库
没有固定的查询语言
键值对形式存储,列存储,文档存储,图形数据库(社交关系)
最终一致性
高性能,高可用,高可拓展
了解REDIS 数据库
单线程 默认端口号:6379 默认有16个数据库
redis数据库的命令
select 切换数据库
dbsize 查看数据大小
flushdb 清空当前数据库
String 类型
keys * 查看数据库所有key值
exists 查询key是否存在
move 移除key值
expire。 这是key值过期时间
type 查询key类型
append。 追加key的value值
strlen。获取字符串长度
ttl。 查看key中value 过期时间
incr 自增1
decr 自减1
incrby 设置步长 指定增量
decrby 设置指定减量
getrange 获取字符串范围
mset 同时设置多个key值
mget 同时获取多个key值
setex 新增key 并设置过期时间
setnx 不存在再设置value值 (在分布式锁中会常用)
Redis 事务
redis 单体命令是原子性的,单事务不保证原子性
redis事务本质:一组命令的集合,一个事务中的所有命令都会被序列化,在执行过程中会按照顺序执行
redis事务具有一次性,顺序性,排它性
---队列 set set get set 执行
所有命令在事务中,并没有直接执行,只有发起执行命令才会执行
开启事务。 multi
127.0.0.1:6379> MULTI
OK
127.0.0.1:6379(TX)> set key v1
QUEUED
127.0.0.1:6379(TX)> set key1 v2
QUEUED
127.0.0.1:6379(TX)> set key3 v3
QUEUED
127.0.0.1:6379(TX)> get key3
QUEUED
127.0.0.1:6379(TX)> exec 执行事务
1) OK
2) OK
3) OK
4) "v3"
redis中 watch 可以当作redis乐观锁操作
如果事务失败 需解锁继续执行
watch key 加锁
multi 开启事务
decrby 设置减量
incrby 设置增量
exec 执行
unwatch 解锁
评论