大型网站分布式缓存技术

大型网站:node

高并发 包括 访问节点  和  数据库   hadoop 按照理论单表达1000亿级别才值得使用linux

固然也有些公司没有达到 也使用,这样也能够提升系统的性能redis

关系型数据库 和  非关系型数据库的区别数据库

关系型数据库  安全

数据一致性比较好(支持事务)  ruby

支持复杂查询  服务器

通用性 技术成熟性多线程

非关系型数据库
高并发 大数据下读写能力较强并发

基于分布式 易于扩展 可伸缩 
简单,弱结构化存储app

数据库表设计 

空间维度    时间维度  索引建立技巧

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
相关文章
相关标签/搜索