NoSQL简介
- NoSQL,全名为Not Only SQL,指的是非关系型的数据库
- 随着访问量的上升,网站的数据库性能出现了问题,于是nosql被设计出来
- 优点:
高可扩展性
分布式计算
低成本
架构的灵活性,半结构化数据
没有复杂的关系
- 缺点:
没有标准化
有限的查询功能(到目前为止)
最终一致是不直观的程序
Redis安装
1.在线安装
直接输入命令
sudo apt-get install redis-server
安装完成后,Redis服务器会自动启动。
使用以下命令可以看到服务器系统进程默认端口6379
ps -aux|grep redis
redis 2890 0.2 0.1 41872 6064 ? Ssl 14:17 0:07 /usr/bin/redis-server 127.0.0.1:6379
hzlarm 3222 0.0 0.0 11324 780 pts/2 S+ 15:02 0:00 grep --color=auto redis
使用命令可以看到redis端口状态
netstat -nlt|grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN
使用命令可以看到Redis服务器状态
sudo /etc/init.d/redis-server status
2.下载安装包:
下载:打开redis官方网站,推荐下载稳定版本(stable)
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
解压
tar xzf redis-5.0.5.tar.gz
复制:推荐放到usr/local目录下
sudo mv redis-5.0.5 /usr/local/redis
进入redis目录
cd /usr/local/redis/
生成:
sudo make
若失败则使用
sudo make MALLOC=libc
后再sudo make
测试 sudo make test 这段运行时间会较长
安装:将redis的命令安装到/usr/bin/目录
sudo make install
运行 redis-server 按ctrl+c停止
Redis服务器基本配置
配置文件为/etc/redis/redis.conf
(在线安装推荐)或者 /usr/local/redis/redis.conf
(手动安装)
首先
sudo vi /etc/redis/redis.conf
添加Redis的访问账号
Redis服务器默认是不需要密码的,假设设置密码为hzlarm。
去掉requirepass 前面的注释#,在后面添加密码
requirepass hzlarm
开启Redis的远程连接
注释掉绑定地址
#bind 127.0.0.1
修改Redis的默认端口
port 6379
Redis以守护进程运行
如果以守护进程运行,则不会在命令行阻塞,类似于服务
如果以非守护进程运行,则当前终端被阻塞,无法使用
推荐改为yes,以守护进程运行
daemonize no|yes
Redis的数据文件
dbfilename dump.rdb
数据文件存储路径
dir /var/lib/redis
配置完成后重新启动服务器
sudo /etc/init.d/redis-server restart or
sudo service redis-server restart or
sudo redis-server /etc/redis/redis.conf
启动客户端
安装Redis服务器,会自动地一起安装Redis命令行客户端程序。命令行输入 redis-cli 如果设置了密码hzlarm 则输入:redis-cli -a hzlarm
常用命令: Redis命令不区分大小写
ping返回PONG表示畅通
help 命令行的帮助
quit 或者Ctrl+d或者Ctrl+c退出
发布订阅
- 发布者不是计划发送消息给特定的接收者(订阅者),而是发布的消息分到不同的频道,不需要知道什么样的订阅者订阅
- 订阅者对一个或多个频道感兴趣,只需接收感兴趣的消息,不需要知道什么样的发布者发布的发布者和订阅者的解耦合可以带来更大的扩展性和更加动态的网络拓扑
- 客户端发到频道的消息,将会被推送到所有订阅此频道的客户端
- 客户端不需要主动去获取消息,只需要订阅频道,这个频道的内容就会被推送过来
消息的格式
- 推送消息的格式包含三部分
- 第一部分
- :消息类型,包含三种类型
subscribe,表示订阅成功
unsubscribe,表示取消订阅成功
message,表示其它终端发布消息
- 如果第一部分的值为subscribe,则第二部分是频道,第三部分是现在订阅的频道的数量
- 如果第一部分的值为unsubscribe,则第二部分是频道,第三部分是现在订阅的频道的数量,如果为0则表示当前没有订阅任何频道,当在Pub/Sub以外状态,客户端可以发出任何redis命令
- 如果第一部分的值为message,则第二部分是来源频道的名称,第三部分是消息的内容
命令
订阅SUBSCRIBE 频道名称 [频道名称 ...]
取消订阅,如果不写参数,表示取消所有订阅UNSUBSCRIBE 频道名称 [频道名称 ...]
将信息发送到指定的频道。PUBLISH 频道 消息
主从配置
- 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构
- 比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
设置主服务器的配置
sudo vi /etc/redis/redis.conf
修改绑定ip
bind 192.168.1.10
重启redis服务器
设置从服务器的配置
sudo vi /etc/redis/redis.conf
注意:在slaveof后面写主机ip,再写端口,而且端口必须写
bind 192.168.1.11
slaveof 192.168.1.10 6379
重启redis服务器
启动客户端
redis-cli -h修改后的ip
在master和slave分别执行info命令,查看输出信息
在master上写数据
set hello world
在slave上读数据
get hello
Redis安装 配置服务器 启动客户端 数据操作 发布订阅 主从配置 卸载Redis
卸载redis
sudo apt-get remove redis-server
sudo apt-get autoremove --purge redis-server