您的位置:首页 > 运维架构 > 网站架构

大型网站分布式缓存技术

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

上步碰到卡死:请执行先代码

$ 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: