四大类:
  • 键值(key-value)存储数据库,如Redis,Voldemort,Oracle BDB
  • 列存储数据库,如HBase,Riak
  • 文档性数据库,CouchDB,MongoDb
  • 图形数据库,Neo4J,InfoGrid,Infinite,Graph

Redis简介

键包含String、 哈希 、list链表 、set集合 、zset有序集合 ,这些数据集合都支持pust/pop add/remove即取交集并集等操作。
数据都是缓存在内存中,也可以周期性把更新的数据写入磁盘或者把修改操作写入追加到文件中。

  1. 首先在服务器计算机中安装gcc,将下载好的redis压缩包放在linux系统指定文件夹下
  2. 解压tar安装包到指定文件夹下,然后进入到安装目录下,输入make进行编译。
  3. 进入到src下,输入make install
  4. 在src中,ls查看(redis-cli  redis-server)
  5. 在local下创建redis,创建一个bin和etc。
  6. 将解压安装中的redis.conf复制到etc下,将src里的mkreleasehdr.sh  redis-benchmark redis-check-aof redis-check-dump  redis-cli redis-server拷贝到bin目录
  7. 启动并指定配置文件,/redis-server /usr/local/redis/etc/redis.conf  要使用后台启动需要修改redis.conf里的daemonize改为yes
  8. 验证启动是否成功。ps -ef|grep redis查看是否有redis服务或者查看端口:netstart -tunpl | grep 6379。进入客户端redis-cli 退出客户端quit
  9. 退出redis服务:1.pkill redis-server        2.kill进程号   3./usr/local/redis/bin/redis-cli shutdown
常用的操作
设置/取值:set name bhz get name
删除值:del name
setnx 表示name如果不存在进行设置,如果存在就不需要设置,返回0
setex color 10 red  表示设置color有效期10秒,10秒之后返回nil(空)
setrange替换字符串  setrange name 2 o 表示替换从第2位开始
lpush 从头部加入元素
rpush 从尾部加入元素
linsert 插入元素
……
exists 是否存在指定的key
expire 设置某个key的过期时间,使用ttl查看剩余时间
persist 取消过期时间
select 选择数据库,默认为0数据库
move[key] 将当前数据库中的key转移到其他数据库中
randomkey 随机返回数据库里的一个key
rename 重命名key
……
echo 打印命令
dbsize 查看数据库的key数量
info 获取数据库信息
config get 实时存储受到的请求,返回相关的配置信息(config get *  返回所有配置)
flushdb 清空当前数据库,flushall 清空所有数据库
……

Redis安全性

vi编辑redis.conf文件,并修改  requirepass ***
重启服务器 pkill redis-server

auth bhz 输入密码才能开始操作。每次进入都需要密码
还有一种方法是登录授权 /usr/local/redis/bin/redis-cli -a bhz

主从复制(主负责写,从负责读)

概念
  1. Master可以拥有多个slave
  2. 多个slave可以连接同一个master外,还可以连接到其他的slave
  3. 主从复制不会阻塞master,在同步数据时master可以继续处理client请求
  4. 提供系统的伸缩性
过程:
  1. slave与master建立连接,发送sync同步命令
  2. master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
  3. 后台完成缓存后,就将文件发给slave
  4. slave将此文件保存到硬盘上
主从复制配置:(模拟)-------主服务器可读可写,从服务器只能读而不能写
  1. clone多台服务器之后修改slave的IP地址(修改ip之后要重启service network restart),远程连接通过vim /etc/sysconfig/network来修改主机名
  2. 将主设备的redis文件远程拷贝到从设备中:scp -r redis 3.0.0/ [从设备IP]:/usr/local scp远程拷贝命令
  3. /usr/local/redis/etc/redis.conf中修改从设备的slaveof<masterip主设备IP><mastport主设备端口号6379>
  4. masterauth <master-password> 如果主设备没有密码 ,可以省略
  5. 启动主从的redis服务之后,使用info查看role角色即可知道主服务或从服务

哨兵机制(对主从服务器的监控

  1. 监控主数据库和从数据库是否运行正常
  2. 主数据库出现故障时,可以自动将从数据库转化为主数据库,实现自动切换
实现步骤:在其中一台从服务器中配置sentinel.conf   哨兵的部署和主服务宕机后是否成为主服务没有关系
  1. copy文件sentinel.conf到/usr/local/redis/etc/中
  2. 修改sentinel.conf。sentinel monitor mymaster[名称] 192.168.1.12[IP地址] 6379[端口] 1[投票选举次数] 。      sentinel down-after-milliseconds mymaster 5000 默认一秒检测一次,这里配置超过5000毫秒为我宕机。sentinel fallover-timeout mymaster 90000  超时时间。sentinel parallel-syncs mymaster 2。sentinel can-fallover mymaster yes。
  3. 启动sentinel哨兵。/usr/local/redis/redis-server /usr/local/redis/etc/sentinel.conf --sentinel &
  4. 查看哨兵相关信息命令。/usr/local/redis/bin/redis-cli -h 192.168.1.175 -p 26379 info Sentinel
  5. 关闭主服务器查看集群信息 /usr/local/redis/bin/redis-cli -h 192.168.1.174 -p 6379 shutdown