概念
- 关系型数据库:是创建在关系模型继承上的数据库,借助于集合代数等数学概念和方法来处理数据中的数据,mysql属于关系型数据库
- 非关系型数据库:NoSQL数据库,Redis属于非关系行数据库
Redis优点和缺点
- 优点:redis使用内存存储,关系型数据库存储在磁盘,内存读取速度快
- 缺点:内存成本高,不能大规模长时间存储
使用缓存场景
- 多读少些:如购物车、商品详情页
存储类型
- 字符串
- 哈希表
- 集合
- 有序集合
- 列表
使用缓存
- 选定数据结构
- 确定失效时间,失效时间有两类:永不过期、设置有效时间
- 存储
接口读取数据
- 发起读取请求
- 发起更新数据请求
为什么不先删缓存?
先删完缓存后在DB没有更新前可能会有请求进来,这个读到的是旧数据,setRedis也是旧的
mac下安装并连接远程redis
Redis基本命令行
- string
SET key value EX seconds 将字符串值value关联到key 并将键的过期时间设置为seconds秒
SET key value NX 只在键不存在时,才对key进行设置操作
SET key value XX 只在键已经存在时,才对键进行设置操作
GET key 返回key的值value,否则key不存在返回特殊值nil,GET命令只能用于字符串值
INCR key 为key存储的数字值加一,如果key不存在,那么它的value 会先被初始为0,然后再执行INCR命令,如果value 储存的值不能解释数字,那么INCR命令将返回一个错误
DECR key key储存的数字值减一,如果键key不存在,那么key的值会先被初始化为0,如果value 储存的值不能解释数字,那么DECR命令将返回一个错误 - Hash
HSET website google “www.g.cn”将哈希表hash中域field的值设置为value
HGET homepage redis redis.com 返回域的value,如果不存在,返回nil
HSET db redis redis.com 返回哈希表key中域的数量
HDEL abbr a 删除域HK - 列表
LPUSH mylist a b c list存入多个值
LLEN mylist 返回list的长度
LREM key count value 根据参数count的值,移除列表中与参数value相等的元素,count的值可以是以下几种:count>0 :从表头开始向表尾搜索;count<0从表位开始向表头搜索;count=0移除表中所有与 * value 相等的值
LPOP mylist 移除并返回列表key的头元素
LINDEX mylist index 返回列表key中,下标为index的元素
LSET mylist index value 将列表key下标为index的元素的值设置为value*
EXISTS list 检查key是否存在