一、Redis简介
1.1、Redis概述
全称Remote Dictionary Server,http://www.redis.cn/,是一种基于内存的键值对(key-value)的NoSQL数据库,它主要有:字符串(Strings)、哈希(Hashs)、列表(Lists)、集合(Sets)、有序集合(Sortedsets/Zsets) 5种数据类型。作为一个高速缓存的中间存储系统,用来处理高并发的数据库操作,主要应用于session的缓存处理。
1.2、Redis的特点
1.高性能的 2.Key/Value数据库 3.基于内存 4.数据类型丰富 5.持久化 6.订阅/发布模型
1.3、持久化
为了保证数据在内存掉电时的安全,建议采用重写模式(Append Only File)简称AOF,默认为RDB(Snapshot全本式复制)模式。
但在Redis 4.0版本新增了RDB-AOF混合持久化格式,这是一个可选的功能,在开启了这个功能之后,AOF重写产生的文件将同时包含RDB格式的内容和AOF格式的内容,其中RDB格式的内容用于记录已有的数据,而AOF格式的内存则用于记录最近发生了变化的数据,这样Redis可以同时兼有RDB持久化和AOF持久化的优点——既能够快速地生成重写文件,也能够在出现问题时,快速地载入数据,通过aof-use-rdb-preamble选项进行开启。
1.4、应用场景
Redis最广泛的应用场景就是使用它作为缓存(新闻或商品内容、聊天式的在线好友列表),除此还有任务队列(秒杀、抢购)、网站访问统计、数据过期处理(可以精确到毫秒)、应用排行榜、分布式集群架构中的session分离等
二、Redis的安装
基础环境CentOS-6.5-x86_64-minimal 、 redis-4.0.1.tar.gz
(本文档全面关闭防火墙!!!!!!!)
1、安装gcc
yum install gcc
2、解压缩tar包
tar -zxvf redis-4.0.1.tar.gz
3、make
redis根目录下 make MALLOC=jemalloc(内存管理优化方案,默认为libc)
4、启动服务
在redis目录下启动服务器端 ./redis/src/redis-server ./redis/redis.conf(完整命令)
5、进入redis
在redis目录下的src目录输入 ./redis/src/redis-cli(完整命令)
6、测试
set key value 比如:set name xiaobai
getkey get name
exit
三、Redis命令
3.1、基本命令
1、flushall清空所有数据库的key
flushdb清空当前数据库中的key
2、keys *显示redis中所有的key值
3、setkey value存储一个数据
4、getkey根据key获取对应的值
5、select num切换数据库共十六个默认DB 0
6、expirekey时间设置某一个key的有效期
ttl查询一个key的剩余有效期
7、del删除key
8、exit退出
3.2、数据类型(value类型)(重点 后续学习)
Redis的key和value都支持二进制安全的字符串,可以序列化java对象进行存储。
Redis4.0 新增了很多操作命令PSYNC、DEL 、 FLUSHDB 、 FLUSHALL、UNLINK、SWAPDB
1、string类型
set get mset mget strlen getrange
2、List类型
lpush | lpushx rpush | rpushx lpop|rpop lrange llen
3、Zset
zadd key score value zrange zrangebyscore zrank zscore zincrby key score
4、Set类型、Hash类型
四、MyEclipse 2016 CI、Tomcat7连接Redis
4.1、MyEclipse 2016 CI连接Redis
1、项目下加载 jedis-2.9.0.jar,注意jedis的方法和直接操作redis的命令基本一致。
2、简单设置一个key
Jedis jedis=newJedis("192.168.136.7",6379); jedis.set("name","xiaohei"); 如此redis库里就生成了name xiaohei
3、连接redis集群。
4.2、Tomcat连接Redis集群
1、版本apache-tomcat-7.0.82.tar.gz、jdk-7u71-linux-x64.rpm安装
2、tomcat目录lib目录下添加tomcat-redis-session-manager-2.1.0.jar commons-pool2-2.4.2.jar jedis-2.9.0.jar
tomcat目录下conf/context.xml添加
3、启动tomcat即可使用
tomcat/bin/startup.sh 访问http://192.168.136.51:8080/index.jsp 和 index1.jsp
第一个jsp index.jsp:
那么在第二个jsp index1.jsp 使用时即可获得 name,
五、Redis集群
Redis是在redis3.x版本开始支持集群的,集群至少需要三台服务器,在加上三台备机,本次测试共使用六台服务器192.168.136.41:6379、192.168.136.42:6379、192.168.136.43:6379、192.168.136.44:6379、192.168.136.45:6379、192.168.136.46:6379。此版本之后服务器支持自动sharding,它有1万6千多个hash solt来完成sharding,再分发给实际服务器,实现散列均匀。
5.1、Redis集群的ruby安装
1.安装ruby
tar -zxvf ruby-2.4.2.tar.gz ./configure make && make install
2.安装zlib
yum installzlib-devel cd ruby/ext/zlib/ ruby extconf.rb
makefile文件修改后再执行 make&&make install
3.安装openssl
yum install openssl-devel cd ruby/ext/ openssl / ruby extconf.rb
makefile文件修改(同zlib)再执行make&&make install
4.gem install redis(可能需要redis-4.0.0.rc1.gem)
5.2、Redis集群的配置
1、物理机192.168.136.41、192.168.136.42、192.168.136.43、192.168.136.44、192.168.136.45、192.168.136.46默认端口为6379,每台的redis目录下redis.conf配置修改
protected-mode....
daemonize yes
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000
appendonly yes (4.0版本个人感觉应该开启aof-use-rdb-preamble)
(下图主要看注释含义,其他忽略)
然后启动所有服务器,再执行./redis/src/redis-trib.rb create --replicas 1 192.168.136.41:6379192.168.136.42:6379 192.168.136.43:6379 192.168.136.44:6379 192.168.136.45:6379192.168.136.46:6379
redis/src/redis-cli -h 192.168.136.41 -c -p 6379 //进入主节点
MEMORY STATS子命令可以查看Redis当前的内存使用情况
5.3、Redis的负载能力
Redis官方也给我们提供了一些测试数据,有50个并发程序来执行10万次请求,Redis读(get)的速度达到了11万次/秒,写(set)的速度达到了8.1万次/秒。但在集群环境中,会影响很大。
Redis是单线程服务。它并没有设计为多CPU进行优化。如果想要从多核获取好处,那就考虑启用多个实例吧。
5.4、Redis集群的状态监控
redis提供了redis-trib工具做部署集群及运维等操作,但版本老旧,第二种工具RedisLive问题较多,个人建议采用redis-monitor程序,是对Redis-live的改进,在python环境下运行的。
注:本文借鉴了网上许多大佬的文章,本篇仅供本人记录和大家参考,如有侵权,联系删除相关内容!
有用请打赏,无用别打脸