想你了的他他 发表于 2018-11-3 12:42:50

redis相关总结

  1. 什么是redis
  redis是一个nosql(not only sql不仅仅只有sql)数据库.翻译成中文叫做非关系型型数据库.
  关系型数据库:以二维表形式存储数据
  非关系型数据库: 以键值对形式存储数据(key, value形式)
  是一家意大利的创业公司出的,然后后来这家公司被VMware赞助. redis底层用C语句编写.
  redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中,
  redis有点:存取速度快,官方称读取速度会达到30万次每秒,写速度在10万次每秒最有,具体限制于硬件.
  缺点:对持久化支持不够良好,
  所以redis一般不作为数据的主数据库存储,一般配合传统的关系型数据库使用.
  2. redis应用领域
  分布式缓存
  保存博客或者论坛的留言回复等.
  总之是用在数据量大,并发量高的情况下
  分布式session
  (session数据存储在web server中,当使用集群时,多台机器无法共享session
  集群环境共享session的通用做法是存储在redis中)
  ServletContext
  (
  application对象 (ServletContext)-----可以存放全局对象---------------特点:tomcat启动后存在,直到服务器停止它才结束
  here is one context per "web application" per Java Virtual Machine
  如果是集群环境怎么办?
  放到数据库里面,性能存在问题?
  解决方案----------用内存数据库,如redis
  提问?
  用静态变量存放PV是否可以?
  在单机环境,效果和ServletContext基本一致,但是在集群环境不行
  )
  static
  注:比如监听器、过滤器之类的单例对象,因为只是监听或者拦截一种对象或者状态,不记录数据,所有不需要存在redis中;同样request对象只是一次请求,这也是不需要的。
  3. 怎么用
  redis主要就是使用命令来进行操作,java端在代码中可以使用Jedis来操作redis服务器
  redis数据类型
  字符串String
  列表listredis中使用的是双向循环链表来实现的list,在redis中更像栈
  散列Hash一般应用于将redis作为分布式缓存,存储数据库中的数据对象
  集合set set中数据是无序的并且不允许重复
  有序集合zset redis会根据分数自动排序,这里可以使用在学生成绩排序,
  或者是手机应用商店流行软件排名等需求中
  4.redis持久化方案:
  rdb:可以设置间隔多长时间保存一次(Redis不用任何配置默认的持久化方案)
  优点:让redis的数据存取速度变快
  缺点:服务器断电时会丢失部分数据(数据的完整性得不到保证)
  aof:可以设置实时保存
  优点:持久化良好,能包装数据的完整性
  缺点:大大降低了redis系统的存取速度
  5. 主从复制:
  这里使用了心跳检测机制,主从复制必须使用rdb持久化方式
  从服务器一般是只读的,保证主服务器和从服务器的数据一致性

页: [1]
查看完整版本: redis相关总结