欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis

程序员文章站 2022-05-28 21:05:39
...

相关概念

数据库类型:

  • 关系型数据库RDBMS:按照预先设置的组织结构,将数据存储在物理介质上,数据之间可以做关联操作

  • 非关系型数据库NOSQL:

    1. Not Only SQL
    2. 不需要预先定义数据存储结构
    3. 每条记录可以有不同的数据类型和字段个数
    4. 主流软件:redis/memcached/mongodb

部署Redis

  • Remote Dictionary Server(远程字典服务器)
  • 高性能的(Key/Values)分布式内存数据库
  • 支持数据持久化(定期把数据存储到硬盘)
  • 支持多种数据类型string/list/hash
  • 支持master-slave模式数据备份
  • 中文官网www.redis.cn

1)安装软件

[[email protected] ~] yum -y install gcc 
[[email protected] ~] tar -xvf redis-4.0.8.tar.gz
[[email protected] redis-4.0.8] cd redis-4.0.8
[[email protected] redis-4.0.8] make
[[email protected] redis-4.0.8] make install

2)初始化配置

[[email protected] redis-4.0.8] ./utils/install_server.sh  #根据提示完成初始化
信息 说明
端口 6379
主配置文件 /etc/redis/6379.conf
日志文件 /var/log/redis_6379.log
数据库目录 /var/lib/redis/6379/
服务启动程序 /usr/local/bin/redis-server
命令行连接命令 /usr/local/bin/redis-cli

3)管理服务

/etc/init.d/redis_6379:开发者提供的shell脚本

] /etc/init.d/redis_6379 stop  #停止服务
] /etc/init.d/redis_6379 start #启动服务
] /etc/init.d/redis_6379 status #查看服务状态
] ps -C redis-server  #查看进程
] ss -antup |grep 6379  #查看端口
] redis-cli 	 #连接redis
> ping
PONG
> set KEY VALUES     #存储数据(straing类型)
> mset KEY1 VALUES1 KEY2 VALUES2 ...   #存储多个key值
> get KEY    		 #获取key值(string类型)
> mget KEY1 KEY2 ...    	#获取多个key值
> select 数据库编号0-15  		#切换库
> keys *    		 #显示所有key名
> keys a??|age 		 #显示指定key名(?匹配任意一个字符)
> exists KEY  	  	 #检测key是否存在(返回值为0代表不存在,返回值为1代表存在)
> ttl KEY  		  	 #查看key生存时间(返回值为-1代表永不过期,-2代表已过期)
> type KEY   		 #查看key类型
> move KEY 库编号     #移动key到指定库
> expire KEY 数字  	 #设置key有效时间(单位:s)
> del KEY   	     #删除指定key
> flushall			 #删除内存里的所有key
> flushdb   		 #删除所在库的所有key
> save				 #保存所有key到磁盘
> shutdown           #停止服务

4)配置文件

/etc/redis/6379.conf

分类:

名称 说明
NETWORK 网络
GENERAL 常规
SNAPSHOTTING 快照
REPLICATION 复制
SECURITY 安全
CLIENTS 客户端
MEMORY MANAGEMENT 内存管理

数据单位:

  12 # 1k => 1000 bytes
  13 # 1kb => 1024 bytes
  14 # 1m => 1000000 bytes
  15 # 1mb => 1024*1024 bytes
  16 # 1g => 1000000000 bytes
  17 # 1gb => 1024*1024*1024 bytes
  18 #
  19 # units are case insensitive so 1GB 1Gb 1gB are all the same.

常用配置:

  70   bind 127.0.0.1   #ip地址
  93   port 6350        #端口
  137  daemonize yes   #以守护进程方式运行
  172  logfile /var/log/redis_6379.log   #日志文件
  187  databases 16    #数据库数量
  264  dir /var/lib/redis/6379  #数据库目录
  501  requirepass 123456   #登录密码
  533  # maxclients 10000    #并发连接数

内存管理:

  • MEMORY MANAGEMENT 内存清除策略
 565 # volatile-lru -> 删除最近最少使用(针对设置了TTL的key)
 566 # allkeys-lru -> 删除最少使用的key(针对所有key)
 567 # volatile-lfu -> 从所有配置了过期时间的key中清除使用频率最少的
 568 # allkeys-lfu -> 从所有key中清除使用频率最少的key
 569 # volatile-random -> 在设置了TTL的key里随机移除
 570 # allkeys-random -> 随机移除key
 571 # volatile-ttl -> 移除最近过期的key
 572 # noeviction -> 不删除
 573 #
 574 # LRU means Least Recently Used
 575 # LFU means Least Frequently Used
  • 优化
 560  maxmemory <bytes>   	#最大内存
 591  maxmemory-policy volatile-lru    #定义使用的策略
 602  maxmemory-samples 5	 #选取key模板的个数(针对lru和ttl策略)
  • 持久化:
 206 #   In the example below the behaviour will be to save:
 207 #   after 900 sec (15 min) if at least 1 key changed
 208 #   after 300 sec (5 min) if at least 10 keys changed
 209 #   after 60 sec if at least 10000 keys changed
 219 save 900 1
 220 save 300 10
 221 save 60 10000

设置密码/ip/端口:

] vim /etc/redis/6379.conf
requirepass 123456
bind 192.168.4.50
port 6350
] /etc/init.d/redis_6379 stop
] /etc/init.d/redis_6379 start

] redis-cli -h 192.168.4.50 -p 6350 -a 123456  #连接
] redis-cli -h 192.168.4.50 -p 6350 -a 123456 stop  #停止服务
  • 修改了密码/ip/端口,/etc/init.d/redis_6379脚本将不能正常执行stop,可以修改脚本内容,也可使用redis-cli实现服务的停止操作

LNMP+Redis

[[email protected]] yum -y install gcc pcre-devel zlib-devel   #安装依赖
[[email protected]] tar -zxvf nginx-1.12.2.tar.gz   #解压
[[email protected]] cd nginx-1.12.2  #进源码目录
[[email protected]] ./configure  #配置
[[email protected]] make && make install
[[email protected]] yum -y install php php-fpm
[[email protected]] vim +65 /usr/local/nginx/conf/nginx.conf
:65,71s/#//
 65         location ~ \.php$ {
 66             root           html;
 67             fastcgi_pass   127.0.0.1:9000;
 68             fastcgi_index  index.php;
 69             include        fastcgi.conf;   
 70         }
[[email protected]] /usr/local/nginx/sbin/nginx -t  #测试配置文件格式
[[email protected]] systemctl start php-fpm
[[email protected]] /usr/local/nginx/sbin/nginx

配置支持Redis

[[email protected]] 部署redis,启动服务
[[email protected]] yum -y install php php-devel
[[email protected]] tar -xvf php-redis-2.2.4.tar.gz
[[email protected]] cd phpredis-2.2.4
[[email protected]] phpize   #生成配置文件php-config及configure命令
[[email protected]] ./configure --with-php-config=/usr/bin/php-config
[[email protected]] make && make install

[[email protected]] vim /etc/php.ini
 728 extension_dir = "/usr/lib64/php/modules/"  #模块目录
 729 ; On windows:
 730 extension = "redis.so"  #模块名
[[email protected]] systemctl restart php-fpm
[[email protected]] vim /usr/local/nginx/html/test.php  #测试脚本
<?php
$redis = new redis();
$redis->connect( '192.168.4.50','6350' );  
$redis->auth( '123456' );   #ip/端口/密码与redis的配置要一致
$redis->set( 'address','xian' );
echo 'OK';
echo $redis->get( 'address' );
?>
[[email protected]] curl localhost/test.php
相关标签: NOSQL