redis概况
1.概念
1.1什么是redis
nosql , key-value,基于内存,实现缓存,可持久化,非关系型数据库,数据库(数据读写)
nosql:不仅支持结构化查询语句
value五种的数据类型String hash set list zset
基于内存:redis运行速度极快,最大支持的上限万条/秒
可持久化:
memoryCache ,类似于redis的缓存持久化
只支持String .不支持持久化,
雪崩:如果一个长期运行的系统中,使用redis,缓存数据非常多,如果突然缓存故障(内存数据丢失),导致海量请求大量涌入数据库,数据库承受不住-宕机-重启,海量数据请求并未消失,所以在缓存技术数据恢复之前,系统不可用。
持久化:
缓存使用数据在内存,为了保证宕机数据不丢失,在运行期间使用持久化机制将内存数据存储在磁盘。可以在技术启动时重新加载磁盘数据。
数据未命中:缓存数据丢失
1.2 redis可以干什么
五种数据类型有关,可以实现缓存,可以实现分布式内存锁,其他复杂功能(计步器, 共同好友,排行榜)
redis的安装
获取安装包的解压
redis基础
五种数据结构:
- String 字符串
- Hash 面向对象的结构
- List 双向链表
- set 集合
- zset 有序集合
基础命令
keys *
//查看所有key ,只支持节点中查找,不支持集群中查找
del name
//删除 name
exists name
//判断name,是否存在
save
//将数据持久化到内存中
flushall
//将内存数据清空,测试环境使用,生产环境绝不允许执行
flushdb
//select 选择分库, flushdb刷新当前分库中的数据
expire key
//设置key的超时时间
ttl key
//查看剩余超时时间 -1 表示永久数据
pexpire key
//设置key的超时时间(毫秒)
pttl key
//查看剩余超时时间 -1 表示永久数据(毫秒)
type key
//查看key对应的数据类型
save
flushall
flushdb
String的命令
set key
//新增、覆盖
get key
//获取
incr key
//自增
decr num
//自减
incrby num 2
//增加2
decrby num 2
//减少2
append
//追加,修改的一种
mset k1 v1 k2 v2
//批量操作
hash类型
hset key name qaz
gset key name
hmset user name qaz pw 123
hmget user name pw
hkeys user
hvals user
hlen
hdel //删除属性值 key保留/del全部删除
//
List链表(lpush/rpush,lpop/rpop,lrange)
双向链表,特点,头尾操作速度快,中间的操作速度慢,有排序,分为上(左)(头)/下(右)(尾)
set类型
sadd favor math chinese english //添加
smembers favor //获取所有元素
srem favor xxx //删除某个元素
scard favor //获取元素个数
sismember key element //判断元素是否在集合中
srandmember key num //随机抽取几个元素
集合与集合之间的操作
sinter set1 set2 //set1与set2的交集
suinon set1 set2 //并集
sdiff set1 swt2 //差集
zset有序集合
zadd result 10 qaz //添加成员
zcard key //查询成员个数
zscore result wsx //查询某个成员分数
zrank key member //计算成员的排名(升序,数值越大,排序越高)
zrem key member //删除某个成员
zincrby key increment member //增加成员分数
zrange key start end //返回指定排名范围的成员
zrangebysore key min max //返回指定分数范围的成员
zcount key min max //返回指定分数范围成员个数
zremrangebyrank key start end //删除指定排名内的升序元素
zremrangebyscore key min max //删除指定分数范围的成员
zset数据中的所有交集并集的操作,是将结果输出到一个新的集合中
redis实现可持久化的方式:
- rdb: dump.rgb, save 存储内存key-value
- aof: 日志型
缓存逻辑:
目的是减少层次的调用,数据的传递,提升效率
作用:系统的单位时间并发能力提高
分布式:
三个节点的分布式集群,数据分片的计算