redis搭建

Redis

MongoDB

NoSQL

• NoSQL(NoSQL = Not Only SQL )

– 意思是 " 不仅仅是 SQL“

– 泛指非关系型数据库

– 不需要预先定义数据存储结构

– 表的每条记录都可以有不同的类型和结构

NoSQL 服务软件

• 主流软件

– Redis

– MongoDB

– Memcached

– CouchDB

– Neo4j

– FlockDB

Redis 特点:

– 支持数据持久化,可以把内存里数据保存到硬盘中

– 不仅仅支持 key/values 类型的数据,同时还支持 list

hash set zset 类型

– 支持 master-salve 模式数据备份

装包:

1)[root@host50 ~]# tar -xf redis-4.0.8.tar.gz

[root@host50 ~]# cd redis-4.0.8/

[root@host50 redis-4.0.8]# ls

00-RELEASENOTES  COPYING  Makefile  redis.conf      runtest-sentinel  tests

BUGS            deps    MANIFESTO  runtest          sentinel.conf    utils

CONTRIBUTING    INSTALL  README.md  runtest-cluster  src

[root@host50 redis-4.0.8]#

[root@host50 redis-4.0.8]# rpm -q gcc gcc-c++

[root@host50 redis-4.0.8]# yum -y install gcc gcc-c++

[root@host50 redis-4.0.8]# make

[root@host50 redis-4.0.8]# make install

2)初始化配置

[root@host50 redis-4.0.8]# cd utils/

[root@host50 utils]# ls

build-static-symbols.tcl  hashtable          redis_init_script.tpl

cluster_fail_time.tcl    hyperloglog        redis-sha1.rb

corrupt_rdb.c            install_server.sh  releasetools

create-cluster            lru                speed-regression.tcl

generate-command-help.rb  redis-copy.rb      whatisdoing.sh

graphs                    redis_init_script

[root@host50 utils]# ./install_server.sh #####初始化脚本

Welcome to the redis service installer

This script will help you easily set up a running redis server

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!

[root@host50 utils]# ss -nuplt | grep 6379

tcp    LISTEN    0      128    127.0.0.1:6379                  *:*                  users:(("redis-server",pid=5058,fd=6))

[root@host50 utils]# /etc/init.d/redis_6379 status ###服务运行脚本

Redis is running (5058)

[root@host50 utils]# /etc/init.d/redis_6379 stop 停止

Stopping ...

Waiting for Redis to shutdown ...

Redis stopped

[root@host50 utils]# /etc/init.d/redis_6379 status

cat: /var/run/redis_6379.pid: 没有那个文件或目录

Redis is running () 没PId号 没起服务

[root@host50 utils]# /etc/init.d/redis_6379 start 启动

Starting Redis server...

[root@host50 utils]# /etc/init.d/redis_6379 status 查看状态

Redis is running (5120)

[root@host50 utils]#

[root@host50 utils]# ps -C redis-server

  PID TTY          TIME CMD

5120 ?        00:00:00 redis-server

初始化完成后服务自动运行

4访问redis服务器存储数据

[root@host50 utils]# redis-cli

127.0.0.1:6379>ping  ##测试能否正常存储数据

PONG

127.0.0.1:6379> exit

[root@host50 utils]# redis-cli

127.0.0.1:6379> set name bob  存数据

OK

127.0.0.1:6379> get name  读数据

"bob"

127.0.0.1:6379> quit

现在时写在内存的,但他会定期将内存数据写入硬盘

[root@host50 utils]# ls /var/lib/redis/6379/  ###数据库目录文件

dump.rdb

[root@host50 utils]#

– Set keyname keyvalue // 存储

– get keyname // 获取ls

– Select 数据库编号 0-15 // 切换库

– Keys * // 打印所以变量

– Keys a? // 打印指定变量

– Exits keyname // 测试是否存在

– ttl keyname  // 查看生存时间 (-1表示永不过期,-2表示已过期)

– type keyname // 查看类型

– move keyname dbname // 移动变量

– expire keyname 10 // 设置有效时间

– del keyname  // 删除变量

– flushall // 删除所有变量

– save // 保存变量

– shutdown // 关闭服务

[root@host50 6379]# redis-cli

127.0.0.1:6379> select 1

OK

127.0.0.1:6379[1]> select 2

OK

127.0.0.1:6379[2]> select 0

OKpho

127.0.0.1:6379> keys *

1) "name"

127.0.0.1:6379> keys a?  一个问号代表一个字符

(empty list or set)

127.0.0.1:6379> keys n?

(empty list or set)

127.0.0.1:6379> keys n???

1) "name"

127.0.0.1:6379> del name 删除 返回值为1 表示删除成功

(integer) 1

flushall 清空所有

                    一 配置 php 支持 Redis

[root@host50 html]# php -m | grep mysql  检查php支持mysql

mysql

mysqli

pdo_mysql

[root@host50 html]# php -m | grep redis 同上

1)• 安装 php 扩展

#yum -y install autoconf

#yum -y install automake

[root@host50 ~]# rpm -ivh php-devel-5.4.16-42.el7.x86_64.rpm

[root@host50 ~]# cd phpredis-2.2.4/

[root@host50 phpredis-2.2.4]# ls

arrays.markdown  debian            php_redis.h        redis_session.c

common.h        debian.control    README.markdown    redis_session.h

config.h        library.c        redis_array.c      rpm

config.m4        library.h        redis_array.h      serialize.list

config.w32      mkdeb-apache2.sh  redis_array_impl.c  tests

COPYING          mkdeb.sh          redis_array_impl.h

CREDITS          package.xml      redis.c

[root@host50 phpredis-2.2.4]# which phpize

/usr/bin/phpize

[root@host50 phpredis-2.2.4]# phpize  ###这个命令就是输出当前源码配置信息

Configuring for:

PHP Api Version:        20100412

Zend Module Api No:      20100525

Zend Extension Api No:  220100525

[root@host50 phpredis-2.2.4]# ls /usr/bin/php-config 同时生成这个文件

# ./configure --with-php-config=/usr/bin/php-config

# make

[root@host50 phpredis-2.2.4]# make install

Installing shared extensions:    /usr/lib64/php/modules/共享文件夹

[root@host50 phpredis-2.2.4]# ls /usr/lib64/php/modules/

curl.so      json.so    mysql.so      pdo.so        phar.so  sqlite3.so

fileinfo.so  mysqli.so  pdo_mysql.so  pdo_sqlite.so  redis.so  zip.so

redis.so就是redis连接php模块

2)修改php配置文件定义模块名和目录

[root@host50 phpredis-2.2.4]# vim /etc/php.ini

726 ; Directory in which the loadable extensions (modules) reside.

727 ; http://php.net/extension-dir

728  extension_dir = "/usr/lib64/php/modules" ####

729 ; On windows:

730 extension = "redis.so"  ####值修改这两行

731

[root@host50 phpredis-2.2.4]# systemctl restart php-fpm

查看是否支持模块

[root@host50 phpredis-2.2.4]# php -m | grep redis

redis

[root@host50 phpredis-2.2.4]#

编写测试文件

[root@bogon bin]# cat

/usr/local/nginx/html/redis.php

<?php

$redis = new redis();

$redis->connect('127.0.0.1',6379);

$redis->set('redistest','666666');

echo $redis->get('redistest');

?>

[root@host50 phpredis-2.2.4]# redis-cli

127.0.0.1:6379> get redistest

"666666"

127.0.0.1:6379>

修改redis配置文件参数

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 sam

69 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  70 bind 192.168.4.50 跟多个ip用空格隔开

  71

93 port 6350 修改默认端口

[root@host50 phpredis-2.2.4]# redis-cli -h 192.168.4.50 -p 6350

192.168.4.50:6350> exit

修改端口或者ip后 重启后不能再用/etc/init.d/redis_6379脚本停止,因为ip变了

[root@host50 phpredis-2.2.4]# redis-cli -h 192.168.4.50 -p 6350 shutdown

停止只能这样 脚本能启动不能停止 或者把这条停止命令写入脚本

[root@host50 phpredis-2.2.4]# /etc/init.d/redis_6379 status

cat: /var/run/redis_6379.pid: 没有那个文件或目录

Redis is running ()

修改脚本让改ip和端口后还能用脚本停

[root@host50 phpredis-2.2.4]# vim /etc/init.d/redis_6379

8 REDISPORT="6350"

43            $CLIEXEC -h 192.168.4.50 -p $REDISPORT shutdown

常用配置选项

– port 6379 // 端口

– bind 127.0.0.1 //IP 地址

– tcp-backlog 511 //tcp 连接总数

– timeout 0 // 连接超时时间

– tcp-keepalive 300 // 长连接时间

– daemonize yes // 守护进程方式运行 /

– databases 16 // 数据库个数

– logfile /var/log/redis_6379.log //pid 文件

– maxclients 10000 // 并发连接数量

– dir /var/lib/redis/6379 // 数据库目录

内存管理

• 内存清除策略

– volatile-lru 最近最少使用 (针对设置了过期时间的 ke

y )

– allkeys-lru 删除最少使用的 key

– volatile-random 在设置了过期的 key 里随机移除

– allkeys-random 随机移除 key

– volatile-ttl (minor TTL) 移除最近过期的 key

– noeviction

不删除 写满时报错

内存管理(续 1 )

• 选项默认设置

– maxmemory <bytes> // 最大内存

– maxmemory-policy noeviction // 定义使用的策略

– maxmemory-samples 5 // 选取模板数据的个数

(针对 lru 和 ttl 策略)

设置连接密码

500 #

501 requirepass 123456  密码

502

503 # Command renaming.

504 #

[root@host50 phpredis-2.2.4]# /etc/init.d/redis_6379 start

Starting Redis server...

[root@host50 phpredis-2.2.4]# ss -nuplt | grep 6350

tcp    LISTEN    0      128    192.168.4.50:6350                  *:*                  users:(("redis-server",pid=22763,fd=6))

[root@host50 phpredis-2.2.4]# redis-cli -h 192.168.4.50 -p 6350 shutdown

(error) NOAUTH Authentication required.

[root@host50 phpredis-2.2.4]# redis-cli -h 192.168.4.50 -p 6350

192.168.4.50:6350> ping

(error) NOAUTH Authentication required.

192.168.4.50:6350> auth 123456  ####登陆后再数密码

OK

192.168.4.50:6350> ping

PONG

192.168.4.50:6350> exit

[root@host50 phpredis-2.2.4]# redis-cli -h 192.168.4.50 -p 6350 -a 123456

192.168.4.50:6350> ping              #####登陆时输入密码

PONG

有密码后停服务:

[root@host50 phpredis-2.2.4]# redis-cli -h 192.168.4.50 -p 6350 -a 123456 shutdown

把密码写入停止

stop)

        if [ ! -f $PIDFILE ]

        then

            echo "$PIDFILE does not exist, process is not running"

        else

            PID=$(cat $PIDFILE)

            echo "Stopping ..."

            $CLIEXEC -h 192.168.4.50 -p $REDISPORT -a 123456 shutdown

            while [ -x /proc/${PID} ]

            do

                echo "Waiting for Redis to shutdown ..."

                sleep 1

            done

            echo "Redis stopped"

        fi

        ;;

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

/etc/init.d/redis-6379 启动脚本

[root@host57 utils]# scp 192.168.4.50:/root/1.txt /root

在57主机上拷贝50主机文件 把4.50/root/1.txt 拷贝到57/root下

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容