Redis学习

缓存定义

缓存是一个告诉数据交换的存储器,使用它可以快速的访问和操作数据。

常见缓存使用

本地缓存的常见使用:Spring Cache、MyBatis的缓存等

我的session存储和redis都放到缓存里面的,所有程序不管部署多少份,访问的都是redis。

Redis学习_第1张图片

 分布式缓存的常见使用:Redis和Memcached

Redis常用数据类型

1、String——字符串类型,使用最最最频繁,相当于Java里的hashmap,以key-value的形式进行存储。根据key来存储和获取value值的。

使用:set k1 v1

           get k1

           strlen k1  #查询字符串长度

           ex(expire)参数来设置字符串的过期时间 eg:设置k1 1000s 后过期(删除)

使用场景:存放用户(登录)信息;

                  存放文章详情和列表信息;

                  存放和累计网页的统计信息

Hash——字典类型

Redis学习_第2张图片

使用:hset myhash key1 value1

         (integer)1

           hget myhash key1

            "value" 

List——列表类型,和Java里的数组一样

使用:lpush list 1 2 3

          (integer) 3

          lpop list

          1

Set——集合类型,无序并唯一的键值集合

使用:sadd myset v1 v2 v3  #添加数据

           smember myset   #查询计划中的所有数据

使用场景:微博关注我的人和我关注的人都适合集合存储,可以保证人员不会重复

                中奖人信息也适合用集合类型存储,这样可以保证一个人不会重复中奖。

集合类型set和列表类型list区别:

        列表可以存储重复元素,集合只能存非重复的元素

        列表是按照元素的先后顺序存储元素的,而集合则是无序方式存储元素的。

ZSet——有序集合类型,相比集合类型多了一个排序属性score(分值),对于有序集合ZSet来说,每个存储元素相当于有两个值组成的,一个是有序结合的元素值,一个是排序值。有序集合的存储元素值也是不能重复的,但分值是可以重复的。

使用:zadd zset1 3 golang 4 sql 1 redis      #添加数据

           zrange zset 0 -1        #查询所有数据

持久化

Redis持久化的方式:

  • 快照方式(RDB,Redis DateBase)将某一时刻的内存数据,以二进制的方式写入磁盘;
  • 文件追加方式(AOF,Append Only File),记录所有的操作命令,并以文本的方式写入追加到文件中;
  • 混合持久化方式,Redis 4.0之后新增的方式,混合持久化是结合了RDB和AOF的优点,在写入的时候,先把当前的数据以RDB的形式写入文件的开头,再将后续的操作命令以AOF的格式存入文件,则有既能保证Redis重启时的速度,又能减低数据丢失的风险。

常见面试题

缓存雪崩

缓存穿透:查询数据库和缓存都无数据,因为数据库查询为u数据,用于容错

Redis集群(选学)

你可能感兴趣的:(redis,学习,数据库)