topic01 redis
redis和memcache区别 redis可以数据持久化
redis安装
C语言开发的 编译需要 yum gcc-c++
tar redis 解压
make
编译
make install PREFIX=/usr/local/redis
安装到指定目录
cd /usr/local/redis/bin
./redis-server
前端启动
*bin/dumb.rdb 数据文件
*后端启动:需要一个配置文件
cp ~/redis-3.0.0/redis.conf /usr/local/redis/bin
vim redis.conf
daemonize yes
./redis-server redis.conf
关闭:./redis-cli shutdown
连接服务端:./redis-cli
默认本机,端口号6379
./redis-cli -h (+IP地址) -p (+port)
redis命令
ping 健康检查
常用数据类型(value):string,hash
hashmap的原理:哈希值 不会顺次查找
incr应用:高并发情形:统计访问量、生成主键
list场景:队列、栈操作的模拟
set …
sortedset ‘z’
key过期时间 expire ttl -1永久 -2不存在
持久化方案
Rdb(默认) redis.conf Save the DB on disk
aof append only mode (默认no)
redis集群
redis-cluster
redis集群 单机版性能瓶颈,内存限制
ping 半数以上投票容错机制
客户端可以与其中任一节点直接连接
均匀放置:crc6算法 哈希槽 16384个槽
“伪分布式”配置 新技能:写脚本start-all.sh 修改权限
/usr/local/redis/bin复制六份(三个,主从)redis
改redis.conf端口号
cluster-enabled yes
编写并执行(增加权限)start-all.sh
集群需要工具:源代码src文件夹 redis-trib.rb
cp redis-trib.rb /usr/local/redis/bin
ruby脚本搭建集群
需要安装ruby 和第三方库
yum install ruby
yum install rubygems
gem install redis-3.0.0.gem
cd /usr/local/redis/bin
执行ruby脚本:搭建集群 主从节点集群
./redis-trib.rb create --replicas 1 192.168.230.100:7001 192.168.230.100:7002 192.168.230.100:7003 192.168.230.100:7004 192.168.230.100:7005 192.168.230.100:7006
*真实集群搭建时候,只要在任意一个服务器上执行ruby命令即可
注意:防火墙关闭
使用任意一个节点的客户端连接集群:
./redis-cli -p <port> -c
-c 连接集群
topic02 jedis和编码部分
jedis单机版
使用连接池:JedisPool单例
关闭连接
jedis集群版 JedisCluster单例 参数Set
切换单机/集群:接口
coomon 工具类:jedis接口和实现类 jedis依赖挪到common里
ac-jedis.xml 写bean:单机版、集群版
测试(切换时候代码不变)
添加缓存~~~
缓存加在服务层还是表现层?
推荐服务层,可用于别的表现层
缓存查询、添加都不应该影响业务逻辑===》tc块+日志
key:缓存主题 value:哈希(kv) 注意:pojo(service)《==》
json(redis)
注:StringUtils:org.apache.commons.lang3.StringUtils包
缓存同步
service增删改操作,删除缓存中的数据
!!!精确删除field(cid,比如某块广告区的内容)不要把整个hash
都删了,这样,改了一块广告区,整个页面都要重新加载