redis是一个key+value类型,类似Java中的map集合的非关系型的数据库,基于内存也可以持久化的数据库,相对于关系型数据库(由于数据存储在硬盘上),性能高,因此我们将redis用于做缓存使用
string
string类型是最简单的数据类型,一个key对应一个value,项目中我们主要用于单点登录,用于储存用户的token,用string类型保存!
hash
hash类型中的key是string类型,value又是一个map(也就是一个key+value的类型),针对这种数据特性,比较适合存储对象,在我们购物车中的商品就是用这种数据类型来进行储存。
list
list类型是按照插入顺序的字符串链表(双向链表结构),主要命令是
lpush
和rpush
,可以支持反向查找和遍历,如果使用的话主要储存商品评论列表,key是该商品的id,vlaue是该商品的评论列表!
set
Set类型是用哈希表类型的字符串序列,没有顺序,集合成员是唯一的,没有重复数据,底层主要是由一个value永远为null的hashmap来实现的。 我们的电商项目中没有用到这个数据类型。这个应用场景一般存储一个列表数据,但列表里面又不希望出现重复数据,比如微博应用中,可以将一个用户所有关注的对象放在一个集合中,将其所有粉丝存在一个集合,这样我们就可以实现两个人的共同好友、共同关注等需求;
zset
zset(sorted set)类型和set类型基本是一致的,不同的是zset这种类型会给每个元素关联一个double类型的分数(score),这样就可以为成员排序,并且插入是有序的。这种数据类型如果使用的话主要用来统计商品的销售排行榜,比如:items:sellsort 10 1001 20 1002 这个代表编号是1001的商品销售数量为10,编号为1002的商品销售数量为20。
(3)我们项目中主要用redis的java客户端Jedis来操作redis数据库,用来缓存各种操作频繁,不经常修改的数据,这样就减轻了数据库的访问压力,提高了查询效率
RDB模式下,会根据配置文件中的save n m ,表示在n秒时间内,该数据被修改m次,则把数据持久化!由于在服务器中进行io的操作,及其占用内存,这样可以减少io的操作。优点:效率高,缺点:数据库一旦宕机,没有被持久化的数据将会丢失!不安全
在AOF的模式下,每一次数据发生变化,就持久化一次。redis默认使用的RDB模式,如果想使用AOF,将配置文件中的appendonly on
改为yes即可!优点:保证了数据的完整性。缺点:这样使得效率极低。
答:做过,由于redis的数据是放在缓存当中的,所有不适合做大型的数据存储,大型数据的存储主要是hadoop
(还度铺)Hbase
(分布式存储系统)或者MogoDB
。因此redis主要是用于来处理高并发的,对于我们的项目来说,电商项目如果并发大的话,一台单独的redis服务器是不够支撑并发的,这就需要我们扩展多态设备进行协同合作,即用到集群!
redis搭建集群的方式有很多种,例如有客户端分片、Twemproxy、Codis等,但是redis3.0之后就支持redis-cluster集群,,这种方式采用的是无中心结构,每个节点保存数据和整个集群的状态,每个节点都和其他所有节点连接。如果使用的话就用redis-cluster集群。
集群这块直接说是公司运维搭建的,小公司的话也有可能由我们自己搭建,开发环境我们也可以直接用单机版的。但是可以了解一下redis的集群版。搭建redis集群的时候,对于用到多少台服务器,每家公司都不一样,大家针对自己项目的大小去衡量。举个简单的例子:
我们项目中redis集群主要搭建了6台,3主(为了保证redis的投票机制)3从(高可用),每个主服务器都有一个从服务器,作为备份机。
答:redis是有事物的,redis的事物的开始命令为MULTI
事物结束的命令为EXEC
当输入MULTI命令之后,再执行对数据的操作语句,是不会马上生效的,只会返回一个QUEUED
,表示这个命令已经被服务器接收并保护起来,,只有在输入命令exec
时,语句才会逐条执行。
监控:用于监控主服务器、从服务器是否正常运行。
提醒:当有一台redis服务器挂掉之后,将会通过api自动发送通知
自动故障迁移:当redis主服务器挂掉了,从服务器自动转换为主服务器!
缓存穿透就是当有人去访问一个不存在的key的数据时,redis当中不存在,就要去数据库查找一下,去数据库中也没有对应的value,这时还对key并发请求很大,这就对数据库造成了很大的压力!这就是缓存穿透
缓存雪崩,就是当服务器中的数据在一个固定的时间段,集体失效,在这个瞬间对数据库的访问压力就很大。
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com