大型网站分布式缓存技术
2016-07-28 00:00
218 查看
大型网站:
高并发 包括 访问节点 和 数据库 hadoop 按照理论单表达1000亿级别才值得使用
当然也有些公司没有达到 也使用,这样也可以提高系统的性能
关系型数据库 和 非关系型数据库的区别
关系型数据库
数据一致性比较好(支持事务)
支持复杂查询
通用性 技术成熟性
非关系型数据库
高并发 大数据下读写能力较强
基于分布式 易于扩展 可伸缩
简单,弱结构化存储
数据库表设计
空间维度 时间维度 索引创建技巧
110220160601UUID 存储值
110220160701UUID
select * from user where innum >= 110220160600UUID and innum <= 110220160700UUID
(UUID用0替换) 查询 区域代码为 1102 201606月份的数据
Redis 和Memcached区别
Redis是单线程的 Memcached 多线程的
单线程 可以保证数据的原子性
Redis特点支持多数据类型如String List Hash Set等
Memcached支持事务
RDB AOF 两种方式持久化到硬盘
redis知识
Redis 目前业界提供三种方式去应用在生产环境
第一种:使用主从复制的方式
第二种:使用高可用的哨兵,keepalived的方式
第三种:集群方式或者第三方支持如codis集群等技术
redis 安装
1.把下载好的redis放到linux 、usr/local 文件夹下 然后进行解压 tar -zxvf redis.tar.gz
2.在redis文件目录下 运行 make (进行编译)
3.cd 到src 下面 运行 make install
(cenos下安装需要 yun install gcc
安装完后 执行 cd到src 下 make MALLOC=libc 安装完成
)
3.验证 (查看src下的目录,有redis-server、redis-cil即可)
4.建立两个文件夹存放redis命令和配置文件
mkdir -p /usr/local/redis/etc mkdir -p /usr/local/redis/bin
-p代表递归创建文件夹
5.把redis-3.2.1下的redis.conf 移动到/usr/local/redis/etc 下
6.把redis-3.2.1/src里面的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-dump、redis-cli、redis-server 文件夹移动到bin下 命令
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
7.启动时并指定配置文件: ./redis-server /usr/local/redis/ect/redis.conf (注意要使用后台启动 所以修改redis.conf里面的daemonize 改为yes)
8.验证启动是否成功
ps -ef |grep redis 查看是否有redis服务 或者查看端口: netstat -tunp | grep 6378
进入redis客户端 ./redis-cil 退出客户端 quit
退出redis服务(1) pkill redis-server (2)kill 进程号 (3)/usr/local/redis/bin/redis-cil shutdown
redis语法:
set name zhangs 设置 nana 的值为zhangs
get name zhangs 获取name的值
使用setex mycolor 10 red 设置mycolor 值有效期10秒 10 秒后发货nil nil表示空
mset
mset key1 bhz key2 bh2 key3 bh3
mget key1 key2 key3
incr 递增一个数字
decr 递减一个数字
append[name]方法 字符串追加方法
strlen[name] 方法 获取字符串的长度
incrby 和 decrby 对某个值进行指定长度的递增递减
Hash 类型
hset myhash filed1 hello (myhash 是集合的名字 field1是字段名 hello为值)
hget myhash field1 获取内容
存储多个值
hset myhash sex nan addr beijin 设置多个值 ??
hgetall myhash 获取多个值
List
lpush方法 (先进后出)
lpush list1 "hello"
lpush list1 world
lrange list1 0 -1(表示从头取到尾)
rpush方法:从尾部加入元素(队列)先进先出
rpush list2 beijing
rpush list2 ext
lrange list2 0-1
inset方法:插入元素
形如:linset list3 before [集合的元素][插入的元素]
set类型和zset类型
smembers set1 查询set1集合里面的元素
sdiffstore set1 set2 查找相同的元素
sadd 向名称为key 的set中添加元素 (set 不允许重复元素)
srem 方法 删除set集合元素
spop 方法 随机返回删除的key
sdiff 方法 返回两个集合的不同元素(哪个集合在前面就以那个集合为标准)
sdiffstore方法: 将返回的不同元素存储到另外一个集合里
返回集合的交集
sinterstore方法: 返回交集结果,存入set3中
sinter set1 set2
sinterstore set3 set1 set2 (将结果写入到set3中)
sunion方法: 取并集
sunionstore方法:取得并集,存入set3中
sunion set1 set2
sunionstore set3 set1 set2(将结果写入到set3中)
redis高级命令
keys * 查询当前系统存储的数据
keys s* 模糊匹配
exists key 是否存在指定的key
exprise key 设置某个key的过期时间
ttl key 查看剩余时间
persist key 取消过期时间
select 1 (切换区域) redis一共16个数据库 小标从0开始
move [key][数据库下标] 当前数据中的key 转移到其他数据库中
randomkey 随机返回数据库里面的一个key
rename 重命名key
echo 打印命令
dbsize 查看数据库的key数量
info 获取数据库信息
config get 实时传输收到的请求(返回相关配置)
config get * 返回所有配置
flushdb 清空当前数据库 flushall 清空所有数据库
redis 安全性
vi /etc/redis.conf 文件 里面的 requirepass***** 找到进行修改
重启服务 pkill redis-server
redis-cli -a bhz 进入
主从复制
redhat 6.5版本
防火墙查看 service iptables status
防火墙关闭 service iptables stop
防火墙开启 service iptables start
redhat 7.0版本
查看防火墙状态。
systemctl status firewalld
临时关闭防火墙命令。重启电脑后,防火墙自动起来。
systemctl stop firewalld
永久关闭防火墙命令。重启后,防火墙不会自动启动。
systemctl disable firewalld
打开防火墙命令。
systemctl enable firewalld
在从的服务器上修改redis.conf 文件 slaveof 127.0.0.1 6379
持久化方式
aof 修改appendonly = yes
redis集群
第一步
新建文件夹redisclouser
在该文件下创建多个文件夹 如 7001 7002 7003 7004 7005 7006
第二步
copy redis.conf 到这6个文件下
第三步
修改每个文件下的redis.conf 文件
bind 192.168.147.128 将ip改成 本机ip
port 7001 修改端口号 7001-7006
dir /root/redis-cluster/7001 修改dir 路径分别指向6个文件夹
cluster-enabled yes 改成yes 开启集群模式
cluster-config-file nodes-7001.conf 将nodes-XX.conf 改成对应的文件夹名
appendonly yes 持久化方式 改成 aof
第四步
启动6个redis
redis-server /root/redis-cluster/001/redis.conf 001-007
netstat -tunpl | grep redis 或者 ps -el | grep rendis 查看启动情况
第五步安装ruby
yum install ruby
gem install redis
上步碰到卡死:请执行先代码
第六步
cd 到redis安装目录 src下
./redis-trib.rb create --replicas 1 192.168.147.128:7001 192.168.147.128:7002 192.168.147.128:7003 192.168.147.128:7004 192.168.147.128:7005 192.168.147.128:7006
说明 1 代表比例
第七步
redis集群搭建完成进行验证 连接任意一个客户端进行验证
./redis-cli -c -h -p(c代表集群模式 h代表端口 p代表端口)
如: ./redis.cli -c -h 192.168.147.129 -p 700*
关闭redis集群里面的服务 ./redis.cli -c -h 192.168.147.129 -p 7001 shutdown
linux命令:
:%s/7001/7002 全局替换语法
:/7001 搜索7001
Ruby 安装
高并发 包括 访问节点 和 数据库 hadoop 按照理论单表达1000亿级别才值得使用
当然也有些公司没有达到 也使用,这样也可以提高系统的性能
关系型数据库 和 非关系型数据库的区别
关系型数据库
数据一致性比较好(支持事务)
支持复杂查询
通用性 技术成熟性
非关系型数据库
高并发 大数据下读写能力较强
基于分布式 易于扩展 可伸缩
简单,弱结构化存储
数据库表设计
空间维度 时间维度 索引创建技巧
110220160601UUID 存储值
110220160701UUID
select * from user where innum >= 110220160600UUID and innum <= 110220160700UUID
(UUID用0替换) 查询 区域代码为 1102 201606月份的数据
Redis 和Memcached区别
Redis是单线程的 Memcached 多线程的
单线程 可以保证数据的原子性
Redis特点支持多数据类型如String List Hash Set等
Memcached支持事务
RDB AOF 两种方式持久化到硬盘
redis知识
Redis 目前业界提供三种方式去应用在生产环境
第一种:使用主从复制的方式
第二种:使用高可用的哨兵,keepalived的方式
第三种:集群方式或者第三方支持如codis集群等技术
redis 安装
1.把下载好的redis放到linux 、usr/local 文件夹下 然后进行解压 tar -zxvf redis.tar.gz
2.在redis文件目录下 运行 make (进行编译)
3.cd 到src 下面 运行 make install
(cenos下安装需要 yun install gcc
安装完后 执行 cd到src 下 make MALLOC=libc 安装完成
)
3.验证 (查看src下的目录,有redis-server、redis-cil即可)
4.建立两个文件夹存放redis命令和配置文件
mkdir -p /usr/local/redis/etc mkdir -p /usr/local/redis/bin
-p代表递归创建文件夹
5.把redis-3.2.1下的redis.conf 移动到/usr/local/redis/etc 下
6.把redis-3.2.1/src里面的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-check-dump、redis-cli、redis-server 文件夹移动到bin下 命令
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server /usr/local/redis/bin
7.启动时并指定配置文件: ./redis-server /usr/local/redis/ect/redis.conf (注意要使用后台启动 所以修改redis.conf里面的daemonize 改为yes)
8.验证启动是否成功
ps -ef |grep redis 查看是否有redis服务 或者查看端口: netstat -tunp | grep 6378
进入redis客户端 ./redis-cil 退出客户端 quit
退出redis服务(1) pkill redis-server (2)kill 进程号 (3)/usr/local/redis/bin/redis-cil shutdown
redis语法:
set name zhangs 设置 nana 的值为zhangs
get name zhangs 获取name的值
使用setex mycolor 10 red 设置mycolor 值有效期10秒 10 秒后发货nil nil表示空
mset
mset key1 bhz key2 bh2 key3 bh3
mget key1 key2 key3
incr 递增一个数字
decr 递减一个数字
append[name]方法 字符串追加方法
strlen[name] 方法 获取字符串的长度
incrby 和 decrby 对某个值进行指定长度的递增递减
Hash 类型
hset myhash filed1 hello (myhash 是集合的名字 field1是字段名 hello为值)
hget myhash field1 获取内容
存储多个值
hset myhash sex nan addr beijin 设置多个值 ??
hgetall myhash 获取多个值
List
lpush方法 (先进后出)
lpush list1 "hello"
lpush list1 world
lrange list1 0 -1(表示从头取到尾)
rpush方法:从尾部加入元素(队列)先进先出
rpush list2 beijing
rpush list2 ext
lrange list2 0-1
inset方法:插入元素
形如:linset list3 before [集合的元素][插入的元素]
set类型和zset类型
smembers set1 查询set1集合里面的元素
sdiffstore set1 set2 查找相同的元素
sadd 向名称为key 的set中添加元素 (set 不允许重复元素)
srem 方法 删除set集合元素
spop 方法 随机返回删除的key
sdiff 方法 返回两个集合的不同元素(哪个集合在前面就以那个集合为标准)
sdiffstore方法: 将返回的不同元素存储到另外一个集合里
返回集合的交集
sinterstore方法: 返回交集结果,存入set3中
sinter set1 set2
sinterstore set3 set1 set2 (将结果写入到set3中)
sunion方法: 取并集
sunionstore方法:取得并集,存入set3中
sunion set1 set2
sunionstore set3 set1 set2(将结果写入到set3中)
redis高级命令
keys * 查询当前系统存储的数据
keys s* 模糊匹配
exists key 是否存在指定的key
exprise key 设置某个key的过期时间
ttl key 查看剩余时间
persist key 取消过期时间
select 1 (切换区域) redis一共16个数据库 小标从0开始
move [key][数据库下标] 当前数据中的key 转移到其他数据库中
randomkey 随机返回数据库里面的一个key
rename 重命名key
echo 打印命令
dbsize 查看数据库的key数量
info 获取数据库信息
config get 实时传输收到的请求(返回相关配置)
config get * 返回所有配置
flushdb 清空当前数据库 flushall 清空所有数据库
redis 安全性
vi /etc/redis.conf 文件 里面的 requirepass***** 找到进行修改
重启服务 pkill redis-server
redis-cli -a bhz 进入
主从复制
redhat 6.5版本
防火墙查看 service iptables status
防火墙关闭 service iptables stop
防火墙开启 service iptables start
redhat 7.0版本
查看防火墙状态。
systemctl status firewalld
临时关闭防火墙命令。重启电脑后,防火墙自动起来。
systemctl stop firewalld
永久关闭防火墙命令。重启后,防火墙不会自动启动。
systemctl disable firewalld
打开防火墙命令。
systemctl enable firewalld
在从的服务器上修改redis.conf 文件 slaveof 127.0.0.1 6379
持久化方式
aof 修改appendonly = yes
redis集群
第一步
新建文件夹redisclouser
在该文件下创建多个文件夹 如 7001 7002 7003 7004 7005 7006
第二步
copy redis.conf 到这6个文件下
第三步
修改每个文件下的redis.conf 文件
bind 192.168.147.128 将ip改成 本机ip
port 7001 修改端口号 7001-7006
dir /root/redis-cluster/7001 修改dir 路径分别指向6个文件夹
cluster-enabled yes 改成yes 开启集群模式
cluster-config-file nodes-7001.conf 将nodes-XX.conf 改成对应的文件夹名
appendonly yes 持久化方式 改成 aof
第四步
启动6个redis
redis-server /root/redis-cluster/001/redis.conf 001-007
netstat -tunpl | grep redis 或者 ps -el | grep rendis 查看启动情况
第五步安装ruby
yum install ruby
gem install redis
上步碰到卡死:请执行先代码
$ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ $ gem sources -l *** CURRENT SOURCES ***
第六步
cd 到redis安装目录 src下
./redis-trib.rb create --replicas 1 192.168.147.128:7001 192.168.147.128:7002 192.168.147.128:7003 192.168.147.128:7004 192.168.147.128:7005 192.168.147.128:7006
说明 1 代表比例
第七步
redis集群搭建完成进行验证 连接任意一个客户端进行验证
./redis-cli -c -h -p(c代表集群模式 h代表端口 p代表端口)
如: ./redis.cli -c -h 192.168.147.129 -p 700*
关闭redis集群里面的服务 ./redis.cli -c -h 192.168.147.129 -p 7001 shutdown
linux命令:
:%s/7001/7002 全局替换语法
:/7001 搜索7001
Ruby 安装
$ ./configure $ make $ sudo make install
相关文章推荐
- pecamaker+corosync高可用集群的搭建
- lvs+keepalived负载均衡高可用集群的配置
- heartbeat+lvs搭建负载均衡高可用集群
- 单点系统的高可用与性能优化
- 应用云化技术架构
- 104.iOS架构模式(MVC/MVCS/MVP/MVVM/VIPER)
- 深度学习的方法、书籍、资料、网站
- 实习小记一:RESTful架构理解入门
- 分布式控制系统Git学习网站
- ActiveMQ常见的高可用架构模式及使用LevelDB、ZooKeeper进行高可用消息架构
- 银联的跨行清算体系架构分析
- 架构图
- 【分享】分享一个压缩 PNG 的网站 TinyPNG
- 网站流量突然下降应该怎么找原因?
- 网站流量突然下降应该怎么找原因?
- Kafka剖析(一):Kafka背景及架构介绍
- Java实现视频网站的视频上传、视频转码、视频关键帧抽图, 及视频播放功能
- 架构设计经验
- 三、LVS高可用搭建
- ODPS技术架构及应用实践