Linux数据库管理——day11——NoSQL的Redis数据库、内存策略简析

NoSQL
    全名 Not Only SQL 指的是非关系型数据库

    部署 Redis 服务
       1. 安装 Redis 对源码包进行编译安装,资源中的包解压后即可编译安装,不需要配置,因为已经生成了一个Makefile文件       2. 配置初始化 : 运行脚本程序 源码包解压位置/utils/install_server.sh 

# 定义端口号
Please select the redis port for this instance: [6379]
Selecting default: 6379

# 定义配置文件
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf

# 定义日志文件
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log

# 定义数据库文件存储位置
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379

# 定义启动程序位置
Please select the redis executable path [/usr/local/bin/redis-server] 

# 定义完成后确认信息
Selected config:
Port           : 6379                            # 端口号
Config file    : /etc/redis/6379.conf            # 主配置文件
Log file       : /var/log/redis_6379.log         # 日志文件
Data dir       : /var/lib/redis/6379             # 数据库存放位置
Executable     : /usr/local/bin/redis-server     # 服务端命令
Cli Executable : /usr/local/bin/redis-cli        # 命令行连接命令
Is this ok? Then press ENTER to go on or Ctrl-C to abort.  # 回车完成配置
Copied /tmp/6379.conf => /etc/init.d/redis_6379    # 服务启动脚本
Installing service...
Successfully added to chkconfig!
Successfully added to runlevels 345!
Starting Redis server...
Installation successful!        # 安装成功

       3. 启动服务

# 启动服务
/etc/init.d/redis_6379 start
# 查看启动状态
/etc/init.d/redis_6379 status
# 停止服务
/etc/init.d/redis_6379 stop

      4. 连接  使用命令 redis-cli 进入控制模式

redis-cli -h 连接IP -p 端口 -a 密码(如果有的话)

   数据库redis的基本知识

     1. 存在内存中,隔一段时间存到磁盘中,也可以手动存盘
     2. 如果存到磁盘,那么数据存储在/var/lib/redis/6379/dump.rdb文件下,每次启动redis服务,都会读取里面的数据信息
     3. 默认有16个表,代表的方式就是编号,0 - 15,在配置文件中可以修改其个数
     4. 当radis服务停止的时候,会自动执行存盘操作,但是flushall会删除磁盘中的数据

redis操作命令

set 变量名 变量值存储变量
get 变量名获取变量
select 数据库编号切换库
keys *打印所有变量
keys 具体字符*打印指定变量
*代表任意多个任意字符
?代表一个任意字符
exists 变量名测试变量是否存在
expire 变量名 10设置变量有效时间
ttl 变量名查看变量剩余的有效时间
-2 代表 已经失效 |||  -1 代表 永久有效  |||  正整数 代表还有多少秒就失效
type keyname查看变量类型
move 变量名 表编号将变量移动到其他表中
del 变量名删除变量
flushall删除所有变量,注意这个命令也会删除磁盘中的数据
flushdb清除当前库的没有的数据
save保存所有变量到磁盘中
shutdown关闭redis服务,并且会保存当前所有变量到磁盘中

   修改配置文件(里面注释很多,有用的只有下面几个参数)

port 端口号码
bind 本机的IP地址(默认是lo回环地址)
tcp-backlog设置tcp连接总数
timeout连接超时间
tcp-keepalive设置长连接时间
当连接过程中,客户端长时间不操作,当达到长连接时间限度的时候,服务器会向客户端发送一个确认包,如果客户端回复了,那服务器不会自动断开,如果没有回应,那么就会断开连接
daemonize守护进程,如果是yes那就会一直有程序监听着,如果是no隔一段时间进程会休眠
logfile /var/log/redis_6379.log指定PID记录文件
databases指定数据库的个数
maxclients并发连接数量,默认被注释了,解除注释就可以修改了
dir指定数据库存放目录
requirepass设置登陆密码,默认被注释了
如果没有密码,在登陆的时候,写了-a也没关系,没有密码,不管-a后面加了什么字符都可以登陆并操作
内存策略
volatile-lru最近最少使用,只有设置了有效时间的快要过期的变脸删除
allkeys-lru不管也没有设置有效时间,只要用的最少的变量就删除
volatile-random在有设置有效时间的变量中随机删除
allkeys-random不管也没有设置有效时间,都会被随机删除
volatile-ttl移除有效期时间到的变量
noeviction全部不删除,内存写满的时候报错,默认是这个策略,不过这个策略不好,必须修改
内存策略的配置文件设置
maxmemory最大内存设置,默认被注释了
maxmemory-policy 内存策略定义使用的策略,默认是noevication
maxmemory-samples 个数选取模板数据个数,这是针对内存策略的,越多模板,内存策略越合理

   关于内存做一些基本解释
   具体配置中只有max那三行是有效的,而介绍了6种内存策略,下面我来说说,内存策略何时触发,如何触发:
      首先,要区别开有效时间,当变量有效时间到的时候就会注销变量,而内存策略是当内存大道既定的内存设置的时候才会被注销。
      然后具体解释一下这6个策略,大致分为2帮3派,怎么说呢,2帮指代的是allkeys和volatile开头的4个算法,他们算法大致相同,区别在于,allkeys处理的是所有变量,包括设置的永久变量,而volatile是只处理被设定了有效时间的变量,永久的变量不被考虑。
      三派指的是lru、random、ttl,这算个算法执行过程都是,当出现内存超出最大值的时候,会触发内存策略,这时候根据设定的模板选取值,从相应范围的变量中取出对应个数的变量,最后lru从这里面选出用的最少的变量删除淘汰,random随机删除或者淘汰一个,ttl删除这几个中有效时间快到的值
     要注意,lru和ttl删除的都是从随机选取的nge模板中的一个值,也就是说,lru删除的不一定是变量中使用最少的,而ttl也不是删除有效时间最快到的值

   改完配置文件后,脚本是已经不能用了,暂时只能程序员登陆redis数据进行操作,停止数据库使用 shutdown 命令,如果想继续使用脚本需要修改一下脚本(如果为了方便,可以把下面的IP和端口号改成配置文件设置的,PASSWORD那个密码也可以改为设置的密码,如果没开可以就按照下面写的进行修改)

sed -i '/^HOSTIP=/d' /etc/init.d/redis_6379
sed -i '/^REDISPORT=/iHOSTIP=${2-"127.0.0.1"}' /etc/init.d/redis_6379
sed -i '/^REDISPORT=/cREDISPORT=${3-"6379"}' /etc/init.d/redis_6379
sed -i '/^REDISPORT=/aPASSWORD=${4-"password"}' /etc/init.d/redis_6379
sed -i 's/$CLIEXEC -p $REDISPORT shutdown/$CLIEXEC -h $HOSTIP -p $REDISPORT -a $PASSWORD shutdown/' /etc/init.d/redis_6379

 


LNMP+Redis集群

   搭建lnmp集群,分为三步
      1. 搭建nginx服务,可以用源码包进行编译安装,也可以到资源中下载rpm包安装
         需要修改nginx的配置文件,开启动静分离

location ~ \.php$ {
    root           html;
    fastcgi_pass   127.0.0.1:9000;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

      2. 搭建数据库,这里搭建redis数据库,然后让另外一个服务器作为独立的MySQL服务器
           搭建 redis 步骤上面已经阐述,解包、编译、安装、初始化,因为是本机使用,配置文件不用特别修改
        
      3. 安装php连接redis的不要模块信息
         3.1 安装依赖包(php-devel不是yum里面的,资源中redis有分享)

yum -y install automake autoconf php php-common
rpm -ivh php-devel-5.4.16-42.el7.x86_64.rpm

         3.2 解压编译安装php连接redis数据库的包

tar -xf php-redis-2.2.4.tar.gz 
phpize 
./configure --with-php-config=/usr/bin/php-config
make && make install

         3.3 配置,修改php配置文件 /etc/php.ini ,如果是新建的话,那么就是修改728-730行

extension_dir = "/usr/lib64/php/modules/"
; On windows:
extension = "redis.so"

         3.4 启动服务

systemctl restart php-fpm

      *. 测试集群连接,在nginx目录下的html目录下创建一个php文件

<?php
$r = new redis();
$r->connect('127.0.0.1',6379);
$r->set('变量名','变量内容');
echo $r->get('变量名');
?>    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值