非关系型数据库-Redis全攻略

  零、Redis安装

  Redis安装方式有yum和源码安装,推荐yum安装  

 

  一、Redis与Memcached的功能对比

名称类型过期策略数据类型持久化主从复制虚拟内存
Memcached k-v数据库 支持 单一数据类型 不支持 不支持 不支持
Redis k-v数据库 支持 多种数据类型 支持 支持 支持(不建议使用)

 

  二、Redis常用配置项

  vim /etc/redis.conf

  daemonize yes        后台运行redis
  pidfile ...           pid文件的位置
  port 6379            端口
  bind ...              绑定redis监听的IP
  timeout ...              超时连接断开时间
  loglevel ...             日志记录级别
  logfile ...             日志文件位置
  databases ...            redis开启的数据库个数
  save ... ...              指定在多少秒内有多少个key被改变就生成一个快照
  dbfilename ...           快照文件的名字
  dir ...              快照文件的位置
  appendonly yes          开启AOF持久化
  slaveof 主服务器IP port      设置主从复制,在从服务器上配置
  requirepass ...                    设置操作验证密码
  maxmemory 8gb                设置redis可用内存

 

  三、Redis数据库操作

  redis-cli -h IP                      进入redis数据库
  info                                     查看redis运行状态
  select 数据库号                  进入指定数据库,数据库号从0~databases项配置的值
  auth 密码                            密码验证,通过验证才能对数据进行读写操作
  config set ...                        在线修改配置项

  

  四、Redis数据操作

  1、字符串类型操作

  set key value                      设置键值对,值为字符类型
  get key                                取值
  keys *                                 查看所有存在的key
  exists key                           查看指定key是否存在
  del key                               删除键值对
  type key                             查看指定键的值的类型
  append key value              尾部追加键值对
  strlen key                           获取key的value值长度
  incr key                              让key的value值加一
  incrby key num                  让key的value值增加指定num的值
  incrbyfloat key float            让key的value值增加指定float的浮点数
  decr key                             让key的value值减一
  decrby key num                 让key的value值减少指定num的值
  mset key1 value1 key2 value2 ... 同时设置多个键值对
  mget key1 key2                 同时获取多个key的value

  

  2、散列类型操作

  hset key attr value             设置hash类型的键值对
  hget key attr                       获取一个key中的指定属性的值
  hmset key1 attr1 value1 attr2 value2 ... 同时设置多个属性
  hmget key1 attr1 attr2 attr3 ... 同时获取多个属性值
  hgetall key                          获取一个key的所有属性值
  hdel key attr                        删除一个key的指定属性
  hexists key attr                   查看一个key的指定属性是否存在
  del book                              删除key

 

  3、列表类型操作

  lpush key value1 value2    从左边设置一个列表
  rpush key value1 value2   从右边设置一个列表
  lpop key                             从左边弹出key
  rpop key                            从右边弹出key
  lrange key start stop          查看列表指定范围内的值
  lrem key count value         删除列表中指定count数的与value相等的内容,count=0删除所有,count>0从左往右删,count<0从右往左删
  llen key                              查看列表长度
  lindex key index                查看列表指定所有的值

 

  4、无序集合操作

  sadd key value1 value2 ... 设置一个集合
  srem key value                 删除指定集合元素
  smembers key                  查看集合所有元素
  sismember key value       查看集合中指定元素是否存在
  sdiff key1 key2                  取集合1中有集合2没有的元素
  sinter key1 key2                取集合1和集合2都有的元素
  sunion key1 key2              取集合1和集合2中所有不重复的元素
  scard key                          查看集合中的元素个数

 

  5、有序集合操作

  zadd key score value        设置一个有序集合,score为value的分数
  zrange key start stop         取集合中指定分数范围的元素
  zrevrank key value            将集合按分数降序排序然后取出指定value的序号

  其他命令参考无序集合操作

 

  五、Redis数据库事务操作

  multi                                 事务开始
  exex                                 事务结束

  Redis事务不支持回滚

 

  六、Redis数据库持久化配置

  Redis数据库支持RBD持久化以及AOF持久化两种持久化配置,两者的区别如下:

  1、RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储,所以不影响主进程性能。这种方式适合做数据的备份和灾难备份,因为用RDB文件进行数据恢复比AOF文件恢复速度更快,但是RDB不适合对重要数据备份,因为备份一次的间隔比较长,一旦发生故障将会损失大量数据。相关配置参数为save、dbfilename、dir

  2、AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。这种方式记录的最小间隔为1秒,因此发生故障时只会损失1秒的数据,适合对重要数据进行备份。不重启开启AOF持久化的命令如下:config set appendonly yes。相关配置参数为appendonly、dir

  

  七、Redis主从配置

  Redis配置主从只需要在从服务器配置文件中写入如下一行内容:slaveof 主服务器IP port

  Redis2.6版本之后从服务器默认是只读模式,当需要将从服务器切换为主服务器时需要在从服务器上执行如下命令将从服务器提升为主服务器:slaveof no one;或者可以用如下命令关闭只读模式:config set slave-read-only no

  配置Redis主从时需要关闭主服务器的持久化,在从服务器上做持久化配置

  单台Redis可用内存不宜配置过大,避免备份恢复时因为数据量过大影响效率 

  生成场景中Redis主从架构为主从+keepalived,从服务器监听VIP,一旦主服务器宕机,VIP自动切换到从服务器上

 

  八、Redis常用工具与模块

  1、PHP配置Redis模块

  wget http://pecl.php.net/get/redis-2.2.7.tgz
  tar zxvf redis-2.2.7.tgz&&cd redis-2.2.7
  /usr/local/php/bin/phpize
  ./configure --with-php-config=/usr/local/php/bin/php-config
  make&&make install
  vim php.ini
  extension = redis.so
  /etc/init.d/php-fpm reload

  

  2、Redis图形管理工具

  yum -y install httpd php5.3.4 php-pdo php-cli php-gd php-mbstring
  wget http://github.com/erikdubbelboer/phpRedisAdmin/archive/master.zip
  unzip master.zip
  mv phpRedisAdmin-master/ /var/www/html/redisadmin
  chown -R apache.apache redisadmin/
  /etc/init.d/httpd start

  浏览器访问http://域名/redisadmin

  

  3、Redis内存分析工具--rdbtools

  pip install rdbtools
  rdb -c memory dump.rdb > redis.csv

  

  九、Redis安全

  1、rename-command flushall ""
  2、设置操作验证密码
  3、使用普通用户运行redis

 

  十、Redis集群

  1、客户端分片,需要手动将redis数据迁移到集群中

  2、代理分片,需要手动将redis数据迁移到集群中

  3、codis,需要会ZooKeeper,最好会GO语言

  4、redis Cluster

posted @ 2018-03-12 12:40  魅力宁波  阅读(260)  评论(0)    收藏  举报