前言
nginx+多tomcat集群的方案。nginx作为负载均衡中间件,可以将请求分发到不同的tomcat上。这样就产生了一个新的问题:如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话session在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台机器,这个时候就会出现取不到session数据的情况。这个项目采用redis-ssession共享的方案,集中式管理存储session的解决方案。
概念
redis是Nosql数据库,是一个key-value存储系统。虽然redis是key-value的存储系统。
特点
- Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- Redis支持数据的备份,即master-slave模式的数据备份。
安装
环境
- centos 7
- redis 5.0.4
- gcc环境
安装步骤
1、下载安装包、安装环境
yum install -y gcc;
wget http://download.redis.io/releases/redis-5.0.4.tar.gz
2、解压并编译
tar zxvf redis-5.0.10.tar.gz
cp /software/redis-5.0.4/
make
make install PREFIX=/software/redis-5.0.4/
3、创建连接
ln -s /software/redis-5.0.4/src/redis-server /usr/bin/redis-server
ln -s /software/redis-5.0.4/src/redis-cli /usr/bin/redis-cli
4、修改配置文件
vim /software/redis-5.0.4/redis.conf
# bind 127.0.0.1 远程登录
protected-mode no
databases 255
#yes为允许后台启动
daemonize yes
基本操作
启动
指定配置文件启动
cd /software/redis-5.0.4/src
./redis-server /software/redis-5.0.4/redis.conf
关闭
./redis-cli shutdown
如果有密码
./redis-cli -a p shutdown
redis-cli客户端
redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set key1 "hello world"
OK
127.0.0.1:6379> get key1
"hello world"
常用命令
keys * 取出当前匹配的所有key
exists key 当前的key是否存在
(integer) 0
del key 删除当前key
expire key time 设置过期时间(秒)
move key1 ad4 移动key1键值对到ad4数据库
persist key 移除当前key的过期时间
random key 随机返回一个key
rename key 重命名key
type key 返回值的数据类型
ping 测试连接是否还在
PONG
echo key 打印
select database 数据库切换
quit 退出连接
db size 当前数据库中key的数量
info 服务器基本信息
monitor 实时转储收到的请求
config get 获取服务器的参数配置
flush db 清空当前数据库
flush all清除所有数据库
类型 | 简介 | 特性 | 场景 |
---|---|---|---|
String(字符串) | 二进制 | 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M | 通用 |
Hash(字典) | 键值对集合,即编程语言中的Map类型 | 适合存储对象,并且可以像数据库中update一个属性一样只修改某一项属性值(Memcached中需要取出整个字符串反序列化成对象修改完再序列化存回去) | 存储、读取、修改用户属性 |
List(列表) | 链表(双向链表) | 增删快,提供了操作某一段元素的API | 1,最新消息排行等功能(比如朋友圈的时间线) 2,消息队列 |
Set(集合) | 哈希表实现,元素不重复 | 1、添加、删除,查找的复杂度都是O(1) 2、为集合提供了求交集、并集、差集等操作 | 1、共同好友 2、利用唯一性,统计访问网站的所有独立ip 3、好友推荐时,根据tag求交集,大于某个阈值就可以推荐 |
Zset(集合) | 将Set中的元素增加一个权重参数score,元素按score有序排列 | 数据插入集合时,已经进行天然排序 | 1、排行榜 2、带权重的消息队列 |