zoukankan      html  css  js  c++  java
  • 源码安装Redis缓存服务 常用Redis数据库操作指令 配置Redis主从服务器

     

    Redis [noSQL数据库,KV数据库,缓存数据库,关系数据库]

    redis开源的可基于内存亦可持久化的日志型、key-value数据库,支持永久存数据

    redis功能更多支持的存储value类型更多stringlistssetszsetshashes

    memcache的加强版,内存--->硬盘;(简单的key-value-->(更多详细信息,列表,记录)

    redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

    redis会周期性的把更新的数据写入磁盘或者把修改的操作写入追加的记录文件,并且在此基础上实现了主从同步master-slave

    (新浪的微博架构基于redis,文字不能超过100个字,内存)

    源码安装Redis缓存服务

    1.安装Redis

    #tar  -xf   /root/lnmp_soft/redis-3.0.6.tar.gz

    #cd  /opt/lnmp_soft/redis-3.0.6

    # yum -y install  gcc

    #make && make install

    #./utils/install_server.sh  

    【初始化---起服务,设置端口号,配置文件,日志文件,数据目录,存储路径,启动脚本,链接等

    # netstat -antpu | grep 6379

    服务器程序redis-server、客户端程序redis-cli、主配置文件

    /etc/redis/redis_portnumber

    #########################################

    2.简单测试(192.168.2.100

    #redis-cli    /连服务,支持上下键Tab键,不区分大小写

    >set key  "hello the redis"  EX 5  /过期时间5

    >get key

    >incr hit

    >decr hit

    Redis支持的数据类型

    1.字符型常用指令: <参考TTS案例>

    nx 只能新建不能覆盖;xx 只能覆盖不能新建;ex过期时间秒或毫秒,不写默认不过期;setrange 复写改写getrangestrlen统计字串长度;append追加或创建;setbit设置或清除特定量上的位;bitcount统计特定位上的数量;incr 递增1decr递减1(访问量,关注的增减);incrby  ab 4递增4bitcount  qq(统计q)mset  一次设置多个值,空格分开;mget获取多个设置的值;

    2.hash表常用指令:<参考TTS案例>

    redis hash是一个string类型的fieldvalue的映射表;一个key可以对应多个field,一个field对应一个value;将一个对象存储位hash类型,较于每个子段都存储成string类型更能节省内存。hsethgethmsethmgethkeys

    tom {age=11

    addreess=beijing

    phone=1333544545

    sex=female}

    hset lily  phone 13333333

    hset lily  sex  female     /设置用户的单个信息

    hget lily  sex     /查看用户的单个信息

    hgetall lily      /查看hash表中所有用户的信息

    hmset jerry sex male phone 1388888 addr chao   /设置用户的大体信息

    hdel  jerry   sex    /删除用户的单个信息

    hdel  jerry   phone

    hkeys jerry       /查看用户的信息栏

    hvals jerry    /查看用户的详细信息

    3.列表常用指令: <参考TTS案例>

    redislist是一个字符队列,一个key可以有多个值。lpop移除并返回列表头元素数据,llen返回列表的长度。lpush插入或创建,lrange读取,lrem删除表中特定值,lset修改;rpush插入指定值,rpop删除指定值

    列表,先进后出的桶

    购买记录,聊天记录, 图文直播

    lpush list1  a

    lpush list1  b

    lpush list1  c    

    lrange list1  0  -1        /查看0-1位的值

    lindex list1  2 精确查找第2

    lpop  list1 删除头部

    rpush  list1 xx

    4.其他操作指令

    delexists 测试一个值是否存在、ttl  key 查看生存周期、expire  key  50 设置生存周期、persist  key 设置永不过期、keys  *  列出所有数据的,flushall清空所有数据、select选择数据库、move库之间移动、rename改名覆盖、renamex值里为空时是才改名、sort排序、type返回类型

    ########################################

    配置文件解析/etc/redis/6379.conf

    maxmemory-policy volatile-lru  内存满时使用LRU算法清理旧数据

    daemonize yes   守护进程

    pidfile /var/run/redis_6379.pid  进程pid

    port 6379   端口号

    timeout 0  链接超时时间

    loglevel notice  日志级别

    logfile /var/log/redis_6379.log   日志文件

    注意单位1k = 1000 bytes   1kb =1024 bytes

    databases  16  数据库个数

    dbfilename dump.rdb  镜像备份文件名

    /var/lib/redis/6379  备份文件路径

     maxmemory<bytes>最大内存使用量

    maxclients 10000 最大客户端并发连接数量

    select 1 进入库1,从0开始算,默认16databases

    save 900 1    /900秒内有1个变动则镜像备份

    save 300 10      /300秒内有十个变动则镜像备份

    save 60 10000         /60秒内有1千个变动则镜像备份

    刚写完若强制关机会自动保存

    内存---》硬盘的 /var/lib/redis/6379路径(拷贝备份)

    ####################################

    192.168.2.100主   192.168.2.200

    主从同步:都安装redis

    1.主服务器操作192.168.2.100

    #vim /etc/redis/6379.conf

    397:  requirepass   123456   //给主服务器配置密码

    #/etc/init.d/redis_6379  restart  重启服务

    密码进数据库

    # redis-cli  -h    //查看帮助

    #redis-cli -a 123456   //输入密码才能使用数据库

    43行给启动脚本添加一个密码-a 123456

    #vim /etc/init.d/redis_6379  

    $CLIEXEC -a 123456 -p $REDISPORT shutdown

    #/etc/init.d/redis_6379 restart  重启服务

    2.从服务器操作192.168.2.200:

    #vim /etc/redis/6379.conf

    211: slaveof  192.168.2.100   6379    /主服务器,端口

    218: masterauth   123456      /密码

    #/etc/init.d/redis_6379 restart  /重启服务

    3.验证:主服务器写数据,从服务器自动同步,可查询该数据主服务器set,从服务器get,没有顺序

    # redis-cli h 192.168.4.100  –a 123456

    # redis-cli h 192.168.4.200

    案例1:源码安装Redis缓存服务 

    案例2:常用Redis数据库操作指令 

    案例3:配置Redis主从服务器 

    1 案例1:源码安装Redis缓存服务

    1.1 问题

    本案例要求先快速搭建好一台Redis服务器,并测试该缓存服务器:

    设置变量test,值为123

    查看变量test的值

    设置计数器mycounter

    对计数器mycounter进行增量加1操作

    1.2 方案

    使用源码包安装Redis服务器,使用redis-cli客户端工具连接Redis服务器并测试缓存数据库。

    使用redis-cli命令测试Redis服务时可以使用的命令列表如表-1所示。

    表-1 Redis命令列表

    1.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:安装Redis服务器

    1)源码安装Redis软件

    [root@svr5 ~]# tar -xzf redis-3.0.6.tar.gz

    [root@svr5 ~]# cd redis-3.0.6

    [root@svr5 ~]# make

    [root@svr5 ~]# make install

    [root@svr5 ~]# ./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]

    //Redis服务器软件存储路径

    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@svr5 ~]# ls /etc/init.d/redis_6379         //查看启动脚本

    2)启用Redis服务并查看监听端口状态

    [root@svr5 ~]# /etc/init.d/redis_6379 restart

    [root@srv5 ~]# netstat -nutlp |grep redis

    tcp        0      0 0.0.0.0:6379    0.0.0.0:*    LISTEN      5749/redis-server *

    tcp        0      0 :::6379            :::*            LISTEN      5749/redis-server *

    步骤二:测试缓存数据库

    1)使用redis-cli测试数据库

    [root@srv5 ~]# redis-cli

    127.0.0.1:6379> ping                        //测试服务器

    PONG

    127.0.0.1:6379> set test 123                //设置变量

    OK

    127.0.0.1:6379> get test                    //查看test

    "123"

    127.0.0.1:6379> INCR mycounter                //设置计数器mycounter

    (integer) 1

    127.0.0.1:6379> INCR mycounter                //对计数器mycounter进行自增运算

    (integer) 2

    2 案例2:常用Redis数据库操作指令

    2.1 问题

    沿用练习一,通过redis-cli工具,对Redis数据库各数据类型进行增删改查等操作,要求如下:

    分别对StringsHash表、List列表三种数据类型进行增删改查等常见操作

    设置数据缓存时间

    清空所有数据

    对数据库操作

    2.2 方案

    使用redis-cli客户端工具连接Redis服务器并测试缓存数据库。

    使用redis-cli命令测试Redis服务是可以使用的命令列表如表-2所示。

    表-2 Redis命令列表

    2.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:常用Redis数据操作指令

    1)使用redis-cli测试数据库(字符串常见操作指南)

    [root@srv5 ~]# redis-cli

    127.0.0.1:6379> ping

    PONG

    127.0.0.1:6379> set string1 "hello the word"    //设置字符串变量

    OK

    127.0.0.1:6379> get string1                    //查看字符串变量

    "hello the word"

    127.0.0.1:6379> set string2 "hello" ex 5    //设置字符串变量,并设置过期时间为5

    OK

    127.0.0.1:6379> get string2                //查看字符串变量

    "hello"

    127.0.0.1:6379> get string2                //字符串过期后,查看该值为空

    (nil)

    127.0.0.1:6379> get string1

    "hello the word"

    127.0.0.1:6379> set string1 hello nx        //仅当string1不存在时,才执行set指令

    (nil)

    127.0.0.1:6379> set string1 hello xx        //仅当string1存在时,才执行set指令

    OK

    127.0.0.1:6379> get string1                     //查看修改后string1的值

    "hello"

    127.0.0.1:6379> set string1 "hello the world"    //修改string1的值

    OK

    127.0.0.1:6379> get string1

    "hello the world"

    127.0.0.1:6379> setrange string1 6 "Redis"        //从第6个字符开始替换string1的值

    (integer) 15

    127.0.0.1:6379> get string1

    "hello Redisorld"

    127.0.0.1:6379> strlen string1                    //计算string1的长度

    (integer) 15

    127.0.0.1:6379> append string1 xxx                //string1进行追加操作

    (integer) 18

    127.0.0.1:6379> get string1

    "hello Redisorldxxx"

    127.0.0.1:6379> append string1 " xxx"

    (integer) 22

    127.0.0.1:6379> get string1

    "hello Redisorldxxx xxx"

    127.0.0.1:6379> setbit string2 0 1                //按位设置string2的值,0位为1

    (integer) 0

    127.0.0.1:6379> setbit string2 1 1                //按位设置string2的值,1位为1

    (integer) 0

    127.0.0.1:6379> setbit string2 2 1

    (integer) 0

    127.0.0.1:6379> setbit string2 3 0

    (integer) 0

    127.0.0.1:6379> get string2                    //不可以查看所有的值

    "xe0"

    127.0.0.1:6379> bitcount string2                 //统计string21的个数

    (integer) 3

    127.0.0.1:6379> getbit string2 0                //查看string20位的值

    (integer) 1

    127.0.0.1:6379> getbit string2 1                //查看string21位的值

    (integer) 1

    127.0.0.1:6379> decr string3                    //递减运算,初始值为0

    (integer) -1

    127.0.0.1:6379> decr string3

    (integer) -2

    127.0.0.1:6379> decr string3

    (integer) -3

    127.0.0.1:6379> decr string3

    (integer) -4

    127.0.0.1:6379> decr string3

    (integer) -5

    127.0.0.1:6379> set string4 10                    //自定义变量初始值为10

    OK

    127.0.0.1:6379> decr string4                    //对自定义变量进行递减运算

    (integer) 9

    127.0.0.1:6379> decr string4

    (integer) 8

    127.0.0.1:6379> decr string4

    (integer) 7

    127.0.0.1:6379> decrby string4 2                //对变量进行递减2运算

    (integer) 5

    127.0.0.1:6379> decrby string4 2

    (integer) 3

    127.0.0.1:6379> get string4

    "3"

    127.0.0.1:6379> set string5 "hello the world"        //设置字符串变量

    OK

    127.0.0.1:6379> getrange string5 0 4            //查看字串的第0至第4

    "hello"

    127.0.0.1:6379> getrange string5 -3 -1            //查看字串的倒数第3位至倒数第1

    "rld"

    127.0.0.1:6379> getset db mongodb                //获取变量的值,并赋新值

    (nil)                                        //没有改变量所有获取的值为空

    127.0.0.1:6379> get db                        //赋新值后,该变量db的值为mongodb

    "mongodb"

    127.0.0.1:6379> getset db redis                //获取变量的值,并赋新值

    "mongodb"

    127.0.0.1:6379> get db

    "redis"

    127.0.0.1:6379> incr page                        //对变量进行递增运算,初始值为0

    (integer) 1

    127.0.0.1:6379> incr page

    (integer) 2

    127.0.0.1:6379> incr page

    (integer) 3

    127.0.0.1:6379> incr page

    (integer) 4

    127.0.0.1:6379> set string6 10                    //设置字符串变量为10

    OK

    127.0.0.1:6379> incr string6                    //对变量进行递增运算

    (integer) 11

    127.0.0.1:6379> incr string6

    (integer) 12

    127.0.0.1:6379> incrby string6 2                //对变量进行递增2运算

    (integer) 14

    127.0.0.1:6379> incrby string6 2

    (integer) 16

    127.0.0.1:6379> incrby string6 2

    (integer) 18

    127.0.0.1:6379> incrby string6 2

    (integer) 20

    127.0.0.1:6379> set num 16.1                //设置浮点数变量

    OK

    127.0.0.1:6379> incrbyfloat num 1.1        //对浮点数进行递增1.1运算

    "17.2"

    127.0.0.1:6379> incrbyfloat num 1.1

    "18.3"

    127.0.0.1:6379> incrbyfloat num 1.1

    "19.4"

    127.0.0.1:6379> incrbyfloat num 1.1

    "20.5"

    2)Hash表常见操作指南

    127.0.0.1:6379> hset hkey google “www.g.cn”        

    //设置hashhkeygoogle列的值为www.g.cn

    (integer) 1

    127.0.0.1:6379> hset hkey baidu “www.baidu.com”

    //设置hashhkeybaidu列的值为www.baidu.com

    (integer) 1

    127.0.0.1:6379> hget hkey google        //查看hashhkeygoogle列的值

    "www.g.cn"

    127.0.0.1:6379> hget hkey baidu        //查看hashhkeybaidu列的值

    "www.baidu.com"

    127.0.0.1:6379> hmset site google "www.g.cn" baidu "www.baidu.com"

    OK

    //一次性设置hashsite的多个列与值

    127.0.0.1:6379> hmget site google baidu

    1) "www.g.cn"

    2) "www.baidu.com"

    //一次性查看hashsite的多个列值

    127.0.0.1:6379> hgetall site                //查看site表中所有的列与值

    1) "google"

    2) "www.g.cn"

    3) "baidu"

    4) "www.baidu.com"

    127.0.0.1:6379> hdel site google            //删除site表中google

    (integer) 1

    127.0.0.1:6379> hgetall site                //验证删除效果

    1) "baidu"

    2) "www.baidu.com"

    127.0.0.1:6379> hmset site google "www.g.cn" baidu "www.baidu.com" sina "www.sina.com"

    OK

    127.0.0.1:6379> hkeys site                    //查看site表的所有列

    1) "baidu"

    2) "google"

    3) "sina"

    127.0.0.1:6379> hvals site                    //查看site表中所有列的值

    1) "www.baidu.com"

    2) "www.g.cn"

    3) "www.sina.com"

    127.0.0.1:6379> hmget site google baidu    //一次性查看site表中的多个列值

    1) "www.g.cn"

    2) "www.baidu.com"

    3)List列表常见操作指南

    127.0.0.1:6379> lpush list1 a b c            //创建列表并赋值

    (integer) 3

    127.0.0.1:6379> lpush list2 a                //创建列表并赋值

    (integer) 1

    127.0.0.1:6379> lpush list2 b                //给列表追加新值

    (integer) 2

    127.0.0.1:6379> lpush list2 c                //给列表追加新值

    (integer) 3

    127.0.0.1:6379> lrange list1 0 -1            

    //查看列表list1中的所有值,从0位到最后1

    1) "c"

    2) "b"

    3) "a"

    127.0.0.1:6379> lrange list1 1 2            //查看列表中第12位的值

    1) "b"

    2) "a"

    127.0.0.1:6379> lrange list1 1 -1            //查看列表中第1至最后1位的值

    1) "b"

    127.0.0.1:6379> lrange list2 0 -1            //查看所有的值

    1) "a"

    2) "c"

    3) "b"

    4) "a"

    127.0.0.1:6379> lrange list2 0 -1

    1) "t"

    2) "a"

    3) "c"

    4) "b"

    5) "a"

    127.0.0.1:6379> lpop list2                

    //返回list2列表头元素数据,并将该值从列表中删除,key不存在则返回nil

    "t"

    127.0.0.1:6379> lrange list2 0 -1        //验证结果

    1) "a"

    2) "c"

    3) "b"

    4) "a"

    127.0.0.1:6379> lpop list2                //接续删除头部元素

    "a"

    127.0.0.1:6379> lrange list2 0 -1        //验证结果

    1) "c"

    2) "b"

    3) "a"

    127.0.0.1:6379> lpop list2

    "c"

    127.0.0.1:6379> lrange list2 0 -1

    1) "b"

    2) "a"

    127.0.0.1:6379> lpush list4 a b c a b c a b c d e f

    (integer) 12

    127.0.0.1:6379> lrange list4 0 -1

     1) "f"

     2) "e"

     3) "d"

     4) "c"

     5) "b"

     6) "a"

     7) "c"

     8) "b"

     9) "a"

    10) "c"

    11) "b"

    12) "a"

    127.0.0.1:6379> lrem list4 2 c            //从前往后删除list4中的2c

    (integer) 2

    127.0.0.1:6379> lrange list4 0 -1        //验证结果

     1) "f"

     2) "e"

     3) "d"

     4) "b"

     5) "a"

     6) "b"

     7) "a"

     8) "c"

     9) "b"

    10) "a"

    127.0.0.1:6379> lrem list4 -2 a        //从后往前删除list4中的2a

    (integer) 2

    127.0.0.1:6379> lrange list4 0 -1        //验证结果

    1) "f"

    2) "e"

    3) "d"

    4) "b"

    5) "a"

    6) "b"

    7) "c"

    8) "b"

    127.0.0.1:6379> lrem list4 0 b            //删除全部的b

    (integer) 3

    127.0.0.1:6379> lrange list4 0 -1        //验证结果

    1) "f"

    2) "e"

    3) "d"

    4) "a"

    5) "c"

    127.0.0.1:6379> lindex list4 0                //返回list4中第0个值

    "f"

    127.0.0.1:6379> lindex list4 1                //返回list4中第1个值

    "e"

    127.0.0.1:6379> lindex list4 -1            //返回list4中最后1个值

    "c"

    127.0.0.1:6379> lindex list4 -2            //返回list4中倒数第2个值

    "a"

    127.0.0.1:6379> lrange list4 0 -1

    1) "f"

    2) "e"

    3) "d"

    4) "a"

    5) "c"

    127.0.0.1:6379> lset list4 0 test        //list4的第0为插入值,值为test

    OK

    127.0.0.1:6379> lrange list4 0 -1        //验证结果

    1) "test"

    2) "d"

    3) "a"

    127.0.0.1:6379> rpush list1 test            //list1列表的尾部插入test

    (integer) 4

    127.0.0.1:6379> lrange list1 0 -1

    1) "c"

    2) "b"

    3) "a"

    4) "test"            //被插入的值test

    4)其他操作指南

    127.0.0.1:6379> set mykey "hello"            //定义字符串变量

    OK

    127.0.0.1:6379> get mykey                    //查看变量

    "hello"

    127.0.0.1:6379> del mykey                    //删除变量

    (integer) 1

    127.0.0.1:6379> get mykey                    //验证结果

    (nil)

    127.0.0.1:6379> exists mykey                //测试变量是否存在

    (integer) 0

    127.0.0.1:6379> set mykey "hello"            //定义变量即值

    OK

    127.0.0.1:6379> exists mykey                //测试变量是否存在

    (integer) 1

    127.0.0.1:6379> expire mykey 5                //设置变量过期时间为5

    (integer) 1

    127.0.0.1:6379> get mykey                    //查看有值

    "hello"

    127.0.0.1:6379> get mykey

    "hello"

    127.0.0.1:6379> get mykey                    //5秒后查看,无值

    (nil)

    127.0.0.1:6379> set mykey "hello"            //设置变量

    OK

    127.0.0.1:6379> expire mykey 10            //定义过期时间

    (integer) 1

    127.0.0.1:6379> persist mykey                //重新定义过期时间为,永久有效

    (integer) 1

    127.0.0.1:6379> get mykey

    "hello"

    127.0.0.1:6379> get mykey

    "hello"

    127.0.0.1:6379> ttl mykey

    (integer) -1                            //永不过期

    127.0.0.1:6379> expire mykey 10        //定义过期时间

    (integer) 1

    127.0.0.1:6379> ttl mykey                //查看过期时间

    (integer) 9

    127.0.0.1:6379> ttl mykey

    (integer) 8

    127.0.0.1:6379> ttl mykey

    (integer) 7

    127.0.0.1:6379> ttl mykey

    (integer) 6

    127.0.0.1:6379> ttl mykey

    (integer) 5

    127.0.0.1:6379> ttl mykey

    (integer) 4

    127.0.0.1:6379> ttl mykey

    (integer) 3

    127.0.0.1:6379> ttl mykey

    (integer) 3

    127.0.0.1:6379> ttl mykey

    (integer) 2

    127.0.0.1:6379> ttl mykey

    (integer) 1

    127.0.0.1:6379> ttl mykey

    (integer) -2        //已经过期

    127.0.0.1:6379> get mykey        //查看mykey的值已经为空

    (nil)

    127.0.0.1:6379> set mykey "hello"

    OK

    127.0.0.1:6379> keys *        //查看数据库下所有数据

     1) "string6"

     2) "list7"

     3) "mykey"

     4) "string4"

     5) "db"

     6) "num"

     7) "result"

     8) "hkey"

     9) "string5"

    10) "string1"

    11) "bit1"

    12) "page"

    13) "bit2"

    14) "site"

    15) "string2"

    16) "list1"

    17) "string3"

    18) "list6"

    127.0.0.1:6379> keys li*

    1) "list7"

    2) "list1"

    3) "list6"

    127.0.0.1:6379> keys s*

    1) "string6"

    2) "string4"

    3) "string5"

    4) "string1"

    5) "site"

    6) "string2"

    7) "string3"

    127.0.0.1:6379> keys string[15]        //查看string1string5

    1) "string5"

    2) "string1"

    127.0.0.1:6379> keys string[0-9]        //查看string09的数据

    1) "string6"

    2) "string4"

    3) "string5"

    4) "string1"

    5) "string2"

    6) "string3"

    127.0.0.1:6379> keys ?it*        //使用通配符所有数据

    1) "bit1"

    2) "bit2"

    127.0.0.1:6379> select 1        //进入1数据库,默认数据库为0

    OK

    127.0.0.1:6379[1]> keys *        //在新数据库中查看数据为空

    (empty list or set)

    127.0.0.1:6379[1]> set test "test"        //在数据库1中创建变量

    OK

    127.0.0.1:6379[1]> get test            //查看变量的值

    "test"

    127.0.0.1:6379[1]> select 2            //进入2数据库

    OK

    127.0.0.1:6379[2]> keys *                //查看所有数据

    (empty list or set)

    127.0.0.1:6379[2]> select 1

    OK

    127.0.0.1:6379[1]> keys *

    1) "test"

    127.0.0.1:6379[1]> select 0

    OK

    127.0.0.1:6379> keys *

     1) "string6"

     2) "list7"

     3) "mykey"

     4) "string4"

     5) "db"

     6) "num"

     7) "result"

     8) "hkey"

     9) "string5"

    10) "string1"

    11) "bit1"

    12) "page"

    13) "bit2"

    14) "site"

    15) "string2"

    16) "list1"

    17) "string3"

    18) "list6"

    127.0.0.1:6379> flushall        //清空所有数据

    OK

    127.0.0.1:6379> keys *        //验证结果

    127.0.0.1:6379[2]> select 0

    OK

    127.0.0.1:6379> set mykey "hello"

    OK

    127.0.0.1:6379> keys *

    1) "mykey"

    127.0.0.1:6379> select 1

    OK

    127.0.0.1:6379[1]> keys *

    (empty list or set)

    127.0.0.1:6379[1]> select 0

    OK

    127.0.0.1:6379> keys *

    1) "mykey"

    127.0.0.1:6379> move mykey 1        //将数据库0中的mykey变量移动至数据库1

    (integer) 1

    127.0.0.1:6379> keys *        //在数据库0中查看为空

    (empty list or set)

    127.0.0.1:6379> select 1        //进入数据库1

    OK

    127.0.0.1:6379[1]> keys *        //查看所有数据库

    1) "mykey"

    127.0.0.1:6379[1]> get mykey        //查看mykey的值

    "hello"

    127.0.0.1:6379[1]> rename mykey testkey        //对变量进行重命名

    OK

    127.0.0.1:6379[1]> keys *

    1) "testkey"

    127.0.0.1:6379[1]> lpush cost 1 8 7 2 5        //创建列表cost

    (integer) 5

    127.0.0.1:6379[1]> sort cost                    //对列表值进行排序

    1) "1"

    2) "2"

    3) "5"

    4) "7"

    5) "8"

    127.0.0.1:6379[1]> lpush test "about" "site"

    (integer) 2

    127.0.0.1:6379[1]> sort test alpha            //对列表进行排序,按字母顺序排列

    1) "about"

    2) "site"

    127.0.0.1:6379[1]> lpush test a f c e g i

    (integer) 8

    127.0.0.1:6379[1]> sort test alpha

    1) "a"

    2) "about"

    3) "c"

    4) "e"

    5) "f"

    6) "g"

    7) "i"

    8) "site"

    127.0.0.1:6379[1]> lpush test a f c e g i

    (integer) 14

    127.0.0.1:6379[1]> sort test alpha

     1) "a"

     2) "a"

     3) "about"

     4) "c"

     5) "c"

     6) "e"

     7) "e"

     8) "f"

     9) "f"

    10) "g"

    11) "g"

    12) "i"

    13) "i"

    14) "site"

    127.0.0.1:6379[1]> sort test alpha limit 0 3    //排序后,仅显示03位的值

    1) "a"

    2) "a"

    3) "about"

    127.0.0.1:6379[1]> sort test alpha limit 0 3

    1) "a"

    2) "a"

    3) "about"

    127.0.0.1:6379[1]> sort test alpha limit 0 3 desc    //倒序排列

    1) "site"

    2) "i"

    3) "i"

    127.0.0.1:6379[1]> sort test alpha limit 0 3 desc store cost2

    //将排序后的结果存入cost2

    (integer) 3

    127.0.0.1:6379[1]> keys *

    1) "test"

    2) "c"

    3) "cost"

    4) "a"

    5) "name1"

    6) "name2"

    7) "testkey"

    8) "b"

    9) "cost2"

    127.0.0.1:6379[1]> lrange cost2 0 -1        //查看cost2中的值

    1) "site"

    2) "i"

    3) "i"

    127.0.0.1:6379[1]> type cost2                //查看cost2的数据类型

    list

    127.0.0.1:6379[1]> set name tom

    OK

    127.0.0.1:6379[1]> type name                //查看name的数据类型

    string

    3 案例3:配置Redis主从服务器

    3.1 问题

    本案例要求先快速搭建好两台Redis服务器,实现两台服务器之间自动数据同步,具体要求如下:

    主服务器IP192.168.2.100

    从服务器IP192.168.2.200

    主服务器认证密码为redis123

    测试主从数据是否正常通过

    3.2 方案

    通过修改Redis配置文件,实现两台服务器之间的自动主从同步功能,方案拓扑如图-1所示。

    -1

    3.3 步骤

    实现此案例需要按照如下步骤进行。

    步骤一:配置主从服务器设置

    1)主服务器安装Redis

    [root@svr100 ~]# tar -xzf redis-3.0.6.tar.gz

    [root@svr100 ~]# cd redis-3.0.6

    [root@svr100 ~]# make

    [root@svr100 ~]# make install

    [root@svr100 ~]# cd utils/

    [root@svr100 ~]#./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!

    2)从服务器安装Redis

    [root@svr200 ~]# tar -xzf redis-3.0.6.tar.gz

    [root@svr200 ~]# cd redis-3.0.6

    [root@svr200 ~]# make

    [root@svr200 ~]# make install

    [root@svr200 ~]# cd utils/

    [root@svr200 ~]#./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!

    步骤二:配置主从服务器设置

    1)修改主服务器/etc/redis/6379.conf配置文件

    [root@svr100 ~]# vim /etc/redis/6379.conf

    requirepass redis123                               //设置服务器密码

    [root@svr100 ~]# /etc/init.d/redis_6379 restart       //重启服务

    2)修改主服务器的启动脚本,添加服务器密码

    [root@svr100 ~]# vim  /etc/init.d/redis_6379

    $CLIEXEC –a redis123  -p $REDISPORT shutdown

    3)修改从服务器/etc/redis/6379.conf配置文件

    [root@svr200 ~]# vim /etc/redis/6379.conf

    slaveof 192.168.4.100 6379

    masterauth redis123

    [root@svr200 ~]# /etc/init.d/redis_6379  restart

    步骤三:验证效果

    1) 主服务器操作

    [root@svr100 ~]# redis-cli –h 192.168.4.100 –a redis123      //登录主服务器设置数据

    192.168.4.10:6379> set test 123456

    OK

    2) 从服务器操作

    [root@svr200 ~]# redis-cli –h 192.168.4.200            //登录主服务器查看数据同步效果

    192.168.4.20:6379> set test

    “123456”

     

  • 相关阅读:
    webapi 中使用 protobuf
    apache httpclient cache 实现可缓存的http客户端
    编译nginx时提示undefined reference to 'pcre_free_study' 的问题及解决
    深入理解JVM内存回收机制(不包含垃圾收集器)
    从JDK源码理解java引用
    Buffer的创建及使用源码分析——ByteBuffer为例
    二叉树的子结构、深度以及重建二叉树
    数据结构——树与二叉树的遍历
    Java NIO之Buffer的使用
    Java多线程之synchronized详解
  • 原文地址:https://www.cnblogs.com/fuzhongfaya/p/8952699.html
Copyright © 2011-2022 走看看