一.为什么要用Redis
项目中的问题:
1.数据库访问压力: 当多个用户请求相同的数据时,可以将第一次查询到的数据进行缓存(放在内存里),减少对数据库的访问次数 2.首页数据的加载效率: 将大量的不常改变的数据缓存在内容中,大幅度提高访问速度
Redis介绍
Redis是一个用C语言开发的,基于内存结构进行键值对数据存储的,高性能的,非关系型NoSQL数据库 1.Redis支持的数据类型
redis基于键值对对数据进行存储,value可以是多种数据类型 string 字符串 hash 映射 list 列表(队列) set集合 zset 无序集合
2.redis特点
数据读写效率高: 基于内存结构 支持持久化 虽然基于键值对存储,但是支持多种数据类型 支持集群,支持主从模式
3.redis应用场景
缓存:提高数据访问速度,降低数据库的访问压力 点赞,排行榜等: 对数据实时读写要求比较高,但是对数据库一致性要求并不是太高的功能场景 分布式锁: 基于redis的操作特性可以实现分布式锁功能 分布式会话:在分布式系统中使用redis实现session(共享缓存) 消息中间件: 可以使用redis实现应用之间的通信
4.redis的优缺点 优点
redis基于内存结构,性能极高 redis基于键值对存储,但是支持多种数据类型 redis所有操作都是原子性,支持事务 redis是基于单线程操作,但是其多路复用实现了高性能读写
缺点
缓存数据与数据库数据必须通过两次写操作才能保证数据的一致性 使用缓存会存在缓存穿透,缓存击穿,缓存雪崩等问题 redis可以作为数据库使用,进行数据的持久存储,存在丢失数据的风险
二.Redis基本使用
1.redis常用的数据类型
String常用指令:
set get mset mget incr decr incrby decrby setx setn append strlen
hash常用指令: hset hget hmset hmget hincrby hgetall hkeys hvals hexists hlen hsetnx
list(队列/堆栈)常用指令 lpush rpush lpop rpop lset lrange lindex llen ltrim rpoplpush lpoprpush rpoprpush lpoplpush
set常用指令: sadd smembers spop sinter sunion sdiff srem sismember
zset常用指令: zadd zrange zscore zcard zcount zrem zrevrange
其他常用指令: keys * exists del ttl expire pexpire persist
数据库指令: select move flushdb flushall dbsize lastsave
三.Redis持久化策略
1.RDB(Redis DataBase)
2.AOF(Apeend Only File)
|