转载自:http://blog.51cto.com/cherryliang/1944361

Redis介绍

●redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现master-slave(主从)同步。

●redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key-value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP。JavaScript,Perl,Object-C,Python,Ruby等客户端,使用很方便。

●简单比较Redis与Memcached的区别:

1、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。

2、Redis支持数据的备份,即master-slave模式的数据备份。

3、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

●在redis中,并不是所有的数据都一直存储在内存中,这是和Memcached相比一个最大的区别。Redis只会缓存所有的key信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要的swap到磁盘,然后将这些key对应的value持久化的磁盘中,同时在内存中清除。这种特性使得Redis可以保持超过其他机器本身内存大小的数据。当然,机器本身的内存要能够保持所有的key,因为这些数据是不会进行swap操作的

●当从Redis中读取数据的时候,如果读取的key对应的value不在内存中,那么Redis就需要从swap文件中加载相应数据,然后再返回给请求方

█如何保持session会话

●目前,为了方便web能适应大规模的访问,需要实现应用的集群部署。集群最有效的方案就是负载均衡,而实现负载均衡用户每一个请求都有可能被分配到不固定的服务器上,这样我们首先要解决session的统一来保证无论用户的请求被转发到那个服务器上都能保证用户的正常使用,即需要实现session的共享机制。

●在集群系统下实现session统一有以下几种方案:

1、请求精确定位:sessionsticky,例如基于访问ip的hash策略,即当前用户的请求都集中定位到一台服务器中,这样单台服务器保存了用户的session登录信息,如果宕机,则等同于单点故障,会丢失,会话不复制。

2、session复制共享:sessionreplication,如Tomcat自带session共享,主要是指集群环境下,多台应用服务器之间同步session,使session保持一致,对外透明。如果其中一台服务器发生故障,根据负载均衡的原理,调度器会遍历寻找可用节点,分发请求,由于session已同步,故能保证用户的session信息不会丢失,会话复制。

★上述方案的不足之处:

①必须在同一种中间件完成(如:Tomcat-Tomcat之间)

②session复制带来的性能损失会快速增加,特别是当session中保存了较大的对象,而且对象变化较快时,性能下降更加显著,会消耗系统性能。这种特性使得web应用的水平扩展受到了限制。

③session内容通过广播同步给成员,会造成网络流量瓶颈,即便是内网瓶颈。在大并发下表现并不好

3、基于cache DB缓存的session共享

即使用cache DB存取session信息,应用服务器接受请求将session信息保存在cache DB中,当应用服务器发生故障时,调度器会遍历寻找可用节点,分发请求,当应用服务器发现session不在本机内存时,则去cache DB中查找,如果找到则复制到本机,这样实现session共享和高可用

转载于:https://www.cnblogs.com/cxrz/p/8529592.html

redis介绍及保持session会话相关推荐

  1. asp.net core 使用 Redis 和 Protobuf 进行 Session 缓存

    目录 Redis 介绍 asp.net core Session 介绍 Redis & Session 实例讲解 Session的使用 使用 Protobuf 给 Session添加扩展方法 ...

  2. 详解比springSecurity和shiro更简单优雅的轻量级Sa-Token框架,比如登录认证,权限认证,单点登录,OAuth2.0,分布式Session会话,微服务网关鉴权

    文章目录 1. 技术选型 2. Sa-Token概述 2.1 简单介绍 2.2 登录认证 2.3 权限认证 3. 功能一览 4. Sa-Token使用 4.1 引入Sa-Token依赖 4.2 Sa- ...

  3. PHP漏洞之session会话劫持

    本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. ...

  4. Redis简单案例(四) Session的管理

    Redis简单案例(四) Session的管理 原文:Redis简单案例(四) Session的管理 负载均衡,这应该是一个永恒的话题,也是一个十分重要的话题.毕竟当网站成长到一定程度,访问量自然也是 ...

  5. redis介绍与使用

    1.redis介绍 1.1.什么是redis Redis是使用c语言开发的一个高性能键值数据库.Redis可以通过一些键值类型来存储数据. 键值类型: String字符类型 map散列类型 list列 ...

  6. Redis介绍及常用命令【转载】

    转自:http://langgufu.iteye.com/blog/1434408 一 Redis介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key- ...

  7. Redis介绍、安装、客户端

    1. Redis介绍   1.1 什么是NoSql   为了解决高并发.高可用.高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql.NoSql,叫非关系型数据库,它的全名Not o ...

  8. PHP5:session会话的使用和分析

           Session 的中文译名叫做 " 会话 " ,其本来的含义是指有始有终的一系列动作 / 消息,比如打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个 ...

  9. Nginx+Tomcat实现高可用和Session会话共享

    一.简介 对于生产环境有了一定规模的tomcat集群业务来说,要实现session会话共享,比较稳妥的方式就是使用数据库持久化session.为什么要持久化session(共享session)呢?因为 ...

最新文章

  1. ipa解包打包工具_7步!教你轻松搞定ios重签ipa包
  2. 透过 OKR 进行项目过程管理 1
  3. linux 共享内存陷井,linux共享内存应用与陷阱
  4. 线程互斥与同步 在c#中用mutex类实现线程的互斥_Golang 并发编程与同步原语
  5. Oracle优化-表设计
  6. phpcmsV9栏目内文章批量移动后,新的内容页模板不生效 -分析篇
  7. JAVASCRIPT处理返回的XML字符串
  8. Socket 与 WebSocket
  9. 深入了解什么是服务网格
  10. jQuery的几种简单实用效果
  11. 过采样:SMOTE算法
  12. RC / RL串联电路计算
  13. OBLOG4.0+DVBBS7.10 SP1整合
  14. Windows Hook案例分析与技术探索
  15. 与引导文件系统/vmfs/devices..的备用设备之间的连接已丢失,主机配置更改将不会保存到持久存储中...
  16. 吴恩达深度学习课程完整笔记(DeepLearning.ai)
  17. 批处理CMD显示彩色文字
  18. OSAL 之功耗管理
  19. iOS---学习研究大牛Git高星项目YYCategories(二)
  20. 阿里云神龙团队拿下 TPCx-BB 排名第一的背后技术

热门文章

  1. Android - View绘图原理总结
  2. djngo快速实现--使用Bootstrap
  3. 字符串复制中的while条件
  4. 实时摄像头数据传输丢包问题
  5. float x 与“零值”比较的if语句为?
  6. 常考数据结构与算法:删除链表的倒数第n个节点
  7. NumberOf1Bits(leetcode191)
  8. Spark Stream整合flum和kafka,数据存储在HBASE上,分析后存入数据库
  9. j2se学习中的一些零碎知识点2之基础知识
  10. vsphere---vmotion