redis安装使用

  1. 源码安装部署Redis缓存服务
  2. 常用Redis数据库操作指令
  3. 配置Redis主从服务器

1 源码安装部署Redis缓存服务

1.1 问题

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

  1. 设置变量test,值为123
  2. 查看变量test的值
  3. 设置计数器mycounter
  4. 对计数器mycounter进行增量加1操作

1.2 方案

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

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

表-1 Redis命令列表

1.3 步骤

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

步骤一:安装Redis服务器

1)源码安装Redis软件

 
  1. [root@svr5 ~]# tar -xzf redis-3.0.6.tar.gz
  2. [root@svr5 ~]# cd redis-3.0.6
  3. [root@svr5 ~]# make
  4. [root@svr5 ~]# make install
  5. [root@svr5 ~]# ./utils/install_server.sh            //初始化
  6. Welcome to the redis service installer
  7. This script will help you easily set up a running redis server
  8. Please select the redis port for this instance: [6379]    //设置端口号,默认即可
  9. Selecting default: 6379
  10. Please select the redis config file name [/etc/redis/6379.conf] //配置文件
  11. Selected default - /etc/redis/6379.conf
  12. Please select the redis log file name [/var/log/redis_6379.log] //日志文件
  13. Selected default - /var/log/redis_6379.log
  14. Please select the data directory for this instance [/var/lib/redis/6379]
  15. //数据目录
  16. Selected default - /var/lib/redis/6379
  17. Please select the redis executable path [/usr/local/bin/redis-server]
  18. //Redis服务器软件存储路径
  19. Selected config:
  20. Port : 6379
  21. Config file : /etc/redis/6379.conf
  22. Log file : /var/log/redis_6379.log
  23. Data dir : /var/lib/redis/6379
  24. Executable : /usr/local/bin/redis-server
  25. Cli Executable : /usr/local/bin/redis-cli
  26. Is this ok? Then press ENTER to go on or Ctrl-C to abort.
  27. //确认信息是否正确,回车确认即可
  28. Copied /tmp/6379.conf => /etc/init.d/redis_6379
  29. Installing service...
  30. Successfully added to chkconfig!
  31. Successfully added to runlevels 345!
  32. Starting Redis server...
  33. Installation successful!
  34. [root@svr5 ~]# ls /etc/init.d/redis_6379         //查看启动脚本

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

 
  1. [root@svr5 ~]# /etc/init.d/redis_6379 restart
  2. [root@srv5 ~]# netstat -nutlp |grep redis
  3. tcp 0 0 0.0.0.0:6379    0.0.0.0:*    LISTEN 5749/redis-server *
  4. tcp 0 0 :::6379            :::*            LISTEN 5749/redis-server *

步骤二:测试缓存数据库

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

 
  1. [root@srv5 ~]# redis-cli
  2. 127.0.0.1:6379> ping                        //测试服务器
  3. PONG
  4. 127.0.0.1:6379> set test 123                //设置变量
  5. OK
  6. 127.0.0.1:6379> get test                    //查看test值
  7. "123"
  8. 127.0.0.1:6379> INCR mycounter                //设置计数器mycounter
  9. (integer) 1
  10. 127.0.0.1:6379> INCR mycounter                //对计数器mycounter进行自增运算
  11. (integer) 2

2 常用Redis数据库操作指令

2.1 问题

  1. 沿用练习一,通过redis-cli工具,对Redis数据库各数据类型进行增删改查等操作,要求如下:
  2. 分别对Strings、Hash表、List列表三种数据类型进行增删改查等常见操作
  3. 设置数据缓存时间
  4. 清空所有数据
  5. 对数据库操作

2.2 方案

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

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

表-2 Redis命令列表

2.3 步骤

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

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

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

 
  1. [root@srv5 ~]# redis-cli
  2. 127.0.0.1:6379> ping
  3. PONG
  4. 127.0.0.1:6379> set string1 "hello the word"    //设置字符串变量
  5. OK
  6. 127.0.0.1:6379> get string1                    //查看字符串变量
  7. "hello the word"
  8. 127.0.0.1:6379> set string2 "hello" ex 5    //设置字符串变量,并设置过期时间为5秒
  9. OK
  10. 127.0.0.1:6379> get string2                //查看字符串变量
  11. "hello"
  12. 127.0.0.1:6379> get string2                //字符串过期后,查看该值为空
  13. (nil)
  14. 127.0.0.1:6379> get string1
  15. "hello the word"
  16. 127.0.0.1:6379> set string1 hello nx        //因为变量已经存在,则不执行set指令
  17. (nil)
  18. 127.0.0.1:6379> set string1 hello xx        //变量存在,则执行set指令
  19. OK
  20. 127.0.0.1:6379> get string1                //查看修改后string1的值
  21. "hello"
  22. 127.0.0.1:6379> set string1 "hello the world"    //修改string1的值
  23. OK
  24. 127.0.0.1:6379> get string1
  25. "hello the world"
  26. 127.0.0.1:6379> setrange string1 6 "Redis"        //从第6个字符开始替换string1的值
  27. (integer) 15
  28. 127.0.0.1:6379> get string1
  29. "hello Redisorld"
  30. 127.0.0.1:6379> strlen string1                    //计算string1的长度
  31. (integer) 15
  32. 127.0.0.1:6379> append string1 xxx                //对string1进行追加操作
  33. (integer) 18
  34. 127.0.0.1:6379> get string1
  35. "hello Redisorldxxx"
  36. 127.0.0.1:6379> append string1 " xxx"
  37. (integer) 22
  38. 127.0.0.1:6379> get string1
  39. "hello Redisorldxxx xxx"
  40. 127.0.0.1:6379> setbit string2 0 1                //按位设置string2的值,0位为1
  41. (integer) 0
  42. 127.0.0.1:6379> setbit string2 1 1                //按位设置string2的值,1位为1
  43. (integer) 0
  44. 127.0.0.1:6379> setbit string2 2 1
  45. (integer) 0
  46. 127.0.0.1:6379> setbit string2 3 0
  47. (integer) 0
  48. 127.0.0.1:6379> get string2                    //不可以查看所有的值
  49. "\xe0"
  50. 127.0.0.1:6379> bitcount string2                 //统计string2中1的个数
  51. (integer) 3
  52. 127.0.0.1:6379> getbit string2 0                //查看string2第0位的值
  53. (integer) 1
  54. 127.0.0.1:6379> getbit string2 1                //查看string2第1位的值
  55. (integer) 1
  56. 127.0.0.1:6379> setbit bit1 0 1
  57. (integer) 0
  58. 127.0.0.1:6379> setbit bit1 1 1                //设置bit1为11
  59. (integer) 0
  60. 127.0.0.1:6379> setbit bit2 0 0
  61. (integer) 0
  62. 127.0.0.1:6379> setbit bit2 1 1                //设置bit2为01
  63. (integer) 0
  64. 127.0.0.1:6379> getbit bit1 0
  65. (integer) 1
  66. 127.0.0.1:6379> getbit bit1 1
  67. (integer) 1
  68. 127.0.0.1:6379> getbit bit2 1
  69. (integer) 1
  70. 127.0.0.1:6379> getbit bit2 0
  71. (integer) 0
  72. 127.0.0.1:6379> bitop and result bit1 bit2         //对bit1和bit2进行与运算
  73. (integer) 1
  74. 127.0.0.1:6379> getbit result 0
  75. (integer) 0
  76. 127.0.0.1:6379> getbit result 1                //运算后结果为01
  77. (integer) 1
  78. 127.0.0.1:6379> decr string3                    //递减运算,初始值为0
  79. (integer) -1
  80. 127.0.0.1:6379> decr string3
  81. (integer) -2
  82. 127.0.0.1:6379> decr string3
  83. (integer) -3
  84. 127.0.0.1:6379> decr string3
  85. (integer) -4
  86. 127.0.0.1:6379> decr string3
  87. (integer) -5
  88. 127.0.0.1:6379> set string4 10                    //自定义变量初始值为10
  89. OK
  90. 127.0.0.1:6379> decr string4                    //对自定义变量进行递减运算
  91. (integer) 9
  92. 127.0.0.1:6379> decr string4
  93. (integer) 8
  94. 127.0.0.1:6379> decr string4
  95. (integer) 7
  96. 127.0.0.1:6379> decrby string4 2                //对变量进行递减2运算
  97. (integer) 5
  98. 127.0.0.1:6379> decrby string4 2
  99. (integer) 3
  100. 127.0.0.1:6379> get string4
  101. "3"
  102. 127.0.0.1:6379> set string5 "hello the world"        //设置字符串变量
  103. OK
  104. 127.0.0.1:6379> getrange string5 0 4            //查看字串的第0至第4位
  105. "hello"
  106. 127.0.0.1:6379> getrange string5 -3 -1            //查看字串的倒数第3位至倒数第1位
  107. "rld"
  108. 127.0.0.1:6379> getset db mongodb                //获取变量的值,并赋新值
  109. (nil)                                        //没有改变量所有获取的值为空
  110. 127.0.0.1:6379> get db                        //赋新值后,该变量db的值为mongodb
  111. "mongodb"
  112. 127.0.0.1:6379> getset db redis                //获取变量的值,并赋新值
  113. "mongodb"
  114. 127.0.0.1:6379> get db
  115. "redis"
  116. 127.0.0.1:6379> incr page                        //对变量进行递增运算,初始值为0
  117. (integer) 1
  118. 127.0.0.1:6379> incr page
  119. (integer) 2
  120. 127.0.0.1:6379> incr page
  121. (integer) 3
  122. 127.0.0.1:6379> incr page
  123. (integer) 4
  124. 127.0.0.1:6379> set string6 10                    //设置字符串变量为10
  125. OK
  126. 127.0.0.1:6379> incr string6                    //对变量进行递增运算
  127. (integer) 11
  128. 127.0.0.1:6379> incr string6
  129. (integer) 12
  130. 127.0.0.1:6379> incrby string6 2                //对变量进行递增2运算
  131. (integer) 14
  132. 127.0.0.1:6379> incrby string6 2
  133. (integer) 16
  134. 127.0.0.1:6379> incrby string6 2
  135. (integer) 18
  136. 127.0.0.1:6379> incrby string6 2
  137. (integer) 20
  138. 127.0.0.1:6379> set num 16.1                //设置浮点数变量
  139. OK
  140. 127.0.0.1:6379> incrbyfloat num 1.1        //对浮点数进行递增1.1运算
  141. "17.2"
  142. 127.0.0.1:6379> incrbyfloat num 1.1
  143. "18.3"
  144. 127.0.0.1:6379> incrbyfloat num 1.1
  145. "19.4"
  146. 127.0.0.1:6379> incrbyfloat num 1.1
  147. "20.5"

2)Hash表常见操作指南

 
  1. 127.0.0.1:6379> hset hkey google “www.g.cn”        
  2. //设置hash表hkey,google列的值为www.g.cn
  3. (integer) 1
  4. 127.0.0.1:6379> hset hkey baidu “www.baidu.com”
  5. //设置hash表hkey,baidu列的值为www.baidu.com
  6. (integer) 1
  7. 127.0.0.1:6379> hget hkey google        //查看hash表hkey中google列的值
  8. "www.g.cn"
  9. 127.0.0.1:6379> hget hkey baidu        //查看hash表hkey中baidu列的值
  10. "www.baidu.com"
  11. 127.0.0.1:6379> hsetnx hkey sina "www.sina.com"
  12. //如果sina列不存在,则创建该列并赋值
  13. (integer) 1
  14. 127.0.0.1:6379> hget hkey sina
  15. "www.sina.com"
  16. 127.0.0.1:6379> hsetnx hkey sina "www.sina.com" //sina列已经存在时,不执行赋值
  17. (integer) 0
  18. 127.0.0.1:6379> hmset site google "www.g.cn" baidu "www.baidu.com"
  19. OK
  20. //一次性查看hash表site的多个列与值
  21. 127.0.0.1:6379> hmget site google baidu
  22. 1) "www.g.cn"
  23. 2) "www.baidu.com"
  24. //一次性查看hash表site的多个列值
  25. 127.0.0.1:6379> hgetall site                //查看site表中所有的列与值
  26. 1) "google"
  27. 2) "www.g.cn"
  28. 3) "baidu"
  29. 4) "www.baidu.com"
  30. 127.0.0.1:6379> hdel site google            //删除site表中google列
  31. (integer) 1
  32. 127.0.0.1:6379> hgetall site                //验证删除效果
  33. 1) "baidu"
  34. 2) "www.baidu.com"
  35. 127.0.0.1:6379> hlen site                    //统计site表列的数量
  36. (integer) 1
  37. 127.0.0.1:6379> hmset site google "www.g.cn" baidu "www.baidu.com"
  38. OK
  39. 127.0.0.1:6379> hlen site                    //统计site表列的数量
  40. (integer) 2
  41. 127.0.0.1:6379> hmset site google "www.g.cn" baidu "www.baidu.com" sina "www.sina.com"
  42. OK
  43. 127.0.0.1:6379> hlen site
  44. (integer) 3
  45. 127.0.0.1:6379> hexists site baidu            //判断site表中是否存在baidu列
  46. (integer) 1
  47. 127.0.0.1:6379> hexists site google        //判断site表中是否存在google列
  48. (integer) 1
  49. 127.0.0.1:6379> hexists site souhu            //判断site表中是否存在souhu列
  50. (integer) 0
  51. 127.0.0.1:6379> hkeys site                    //查看site表的所有列
  52. 1) "baidu"
  53. 2) "google"
  54. 3) "sina"
  55. 127.0.0.1:6379> hvals site                    //查看site表中所有列的值
  56. 1) "www.baidu.com"
  57. 2) "www.g.cn"
  58. 3) "www.sina.com"
  59. 127.0.0.1:6379> hmget site google            //一次性查看site表中的多个列值
  60. 1) "www.g.cn"
  61. 127.0.0.1:6379> hmget site google baidu    //一次性查看site表中的多个列值
  62. 1) "www.g.cn"
  63. 2) "www.baidu.com"

3)List列表常见操作指南

 
  1. 127.0.0.1:6379> lpush list1 a b c            //创建列表并赋值
  2. (integer) 3
  3. 127.0.0.1:6379> lpush list2 a                //创建列表并赋值
  4. (integer) 1
  5. 127.0.0.1:6379> lpush list2 b                //给列表追加新值
  6. (integer) 2
  7. 127.0.0.1:6379> lpush list2 c                //给列表追加新值
  8. (integer) 3
  9. 127.0.0.1:6379> lrange list1 0 -1            
  10. //查看列表list1中的所有值,从0位到最后1位
  11. 1) "c"
  12. 2) "b"
  13. 3) "a"
  14. 127.0.0.1:6379> lrange list1 1 2            //查看列表中第1和2位的值
  15. 1) "b"
  16. 2) "a"
  17. 127.0.0.1:6379> lrange list1 1 -1            //查看列表中第1至最后1位的值
  18. 1) "b"
  19. 127.0.0.1:6379> lpushx list2 a                //向列表中追加新值
  20. (integer) 4
  21. 127.0.0.1:6379> lrange list2 0 -1            //查看所有的值
  22. 1) "a"
  23. 2) "c"
  24. 3) "b"
  25. 4) "a"
  26. 127.0.0.1:6379> lpushx list2 t
  27. (integer) 5
  28. 127.0.0.1:6379> lrange list2 0 -1
  29. 1) "t"
  30. 2) "a"
  31. 3) "c"
  32. 4) "b"
  33. 5) "a"
  34. 127.0.0.1:6379> lpushx list3 a            //仅当list3存在时,才插入新值
  35. (integer) 0
  36. 127.0.0.1:6379> lrange list3 0 -1        //验证上一步操作结果
  37. (empty list or set)
  38. 127.0.0.1:6379> lpop list2                
  39. //返回list2列表头元素数据,并将该值从列表中删除,key不存在则返回nil
  40. "t"
  41. 127.0.0.1:6379> lrange list2 0 -1        //验证结果
  42. 1) "a"
  43. 2) "c"
  44. 3) "b"
  45. 4) "a"
  46. 127.0.0.1:6379> lpop list2                //接续删除头部元素
  47. "a"
  48. 127.0.0.1:6379> lrange list2 0 -1        //验证结果
  49. 1) "c"
  50. 2) "b"
  51. 3) "a"
  52. 127.0.0.1:6379> lpop list2
  53. "c"
  54. 127.0.0.1:6379> lrange list2 0 -1
  55. 1) "b"
  56. 2) "a"
  57. 127.0.0.1:6379> llen list2                    //统计list2中元素的个数
  58. (integer) 2
  59. 127.0.0.1:6379> lpush list4 a b c a b c a b c d e f
  60. (integer) 12
  61. 127.0.0.1:6379> lrange list4 0 -1
  62. 1) "f"
  63. 2) "e"
  64. 3) "d"
  65. 4) "c"
  66. 5) "b"
  67. 6) "a"
  68. 7) "c"
  69. 8) "b"
  70. 9) "a"
  71. 10) "c"
  72. 11) "b"
  73. 12) "a"
  74. 127.0.0.1:6379> lrem list4 2 c            //从前往后删除list4中的2个c值
  75. (integer) 2
  76. 127.0.0.1:6379> lrange list4 0 -1        //验证结果
  77. 1) "f"
  78. 2) "e"
  79. 3) "d"
  80. 4) "b"
  81. 5) "a"
  82. 6) "b"
  83. 7) "a"
  84. 8) "c"
  85. 9) "b"
  86. 10) "a"
  87. 127.0.0.1:6379> lrem list4 -2 a        //从后往前删除list4中的2个a值
  88. (integer) 2
  89. 127.0.0.1:6379> lrange list4 0 -1        //验证结果
  90. 1) "f"
  91. 2) "e"
  92. 3) "d"
  93. 4) "b"
  94. 5) "a"
  95. 6) "b"
  96. 7) "c"
  97. 8) "b"
  98. 127.0.0.1:6379> lrem list4 0 b            //删除全部的b值
  99. (integer) 3
  100. 127.0.0.1:6379> lrange list4 0 -1        //验证结果
  101. 1) "f"
  102. 2) "e"
  103. 3) "d"
  104. 4) "a"
  105. 5) "c"
  106. 127.0.0.1:6379> lindex list4 0                //返回list4中第0个值
  107. "f"
  108. 127.0.0.1:6379> lindex list4 1                //返回list4中第1个值
  109. "e"
  110. 127.0.0.1:6379> lindex list4 3
  111. "a"
  112. 127.0.0.1:6379> lindex list4 -1            //返回list4中最后1个值
  113. "c"
  114. 127.0.0.1:6379> lindex list4 -2            //返回list4中倒数第2个值
  115. "a"
  116. 127.0.0.1:6379> lrange list4 0 -1
  117. 1) "f"
  118. 2) "e"
  119. 3) "d"
  120. 4) "a"
  121. 5) "c"
  122. 127.0.0.1:6379> ltrim list4 1 -1            
  123. //保留list4中1位至最后1位的值,其余的全部删除
  124. OK
  125. 127.0.0.1:6379> lrange list4 0 -1        //验证结果
  126. 1) "e"
  127. 2) "d"
  128. 3) "a"
  129. 4) "c"
  130. 127.0.0.1:6379> ltrim list4 0 3
  131. //保留list4中0位至最后3位的值,其余的全部删除
  132. OK
  133. 127.0.0.1:6379> lrange list4 0 -1
  134. 1) "e"
  135. 2) "d"
  136. 3) "a"
  137. 4) "c"
  138. 127.0.0.1:6379> ltrim list4 0 2
  139. OK
  140. 127.0.0.1:6379> lrange list4 0 -1
  141. 1) "e"
  142. 2) "d"
  143. 3) "a"
  144. 127.0.0.1:6379> lset list4 0 test        //给list4的第0为插入值,值为test
  145. OK
  146. 127.0.0.1:6379> lrange list4 0 -1        //验证结果
  147. 1) "test"
  148. 2) "d"
  149. 3) "a"
  150. 127.0.0.1:6379> linsert list4 before d t1    //在list4列表中d值得前面插入值,值为t1
  151. (integer) 4
  152. 127.0.0.1:6379> lrange list4 0 -1            //验证结果
  153. 1) "test"
  154. 2) "t1"
  155. 3) "d"
  156. 4) "a"
  157. 127.0.0.1:6379> linsert list4 after d t1    //在list4列表中d值得后面插入值,值为t1
  158. (integer) 5
  159. 127.0.0.1:6379> lrange list4 0 -1
  160. 1) "test"
  161. 2) "t1"
  162. 3) "d"
  163. 4) "t1"
  164. 5) "a"
  165. 127.0.0.1:6379> blpop list4 3            
  166. //返回list4的头元素并删除该值,如果list4无任何元素,则等待3秒后退出
  167. 1) "list4"
  168. 2) "test"
  169. 127.0.0.1:6379> lrange list4 0 -1        //验证结果
  170. 1) "t1"
  171. 2) "d"
  172. 3) "t1"
  173. 4) "a"
  174. 127.0.0.1:6379> blpop list4 3
  175. 1) "list4"
  176. 2) "t1"            //删除了t1
  177. 127.0.0.1:6379> lrange list4 0 -1        //验证结果
  178. 1) "d"
  179. 2) "t1"
  180. 3) "a"
  181. 127.0.0.1:6379> blpop list4 3
  182. 1) "list4"
  183. 2) "d"            //删除了d
  184. 127.0.0.1:6379> lrange list4 0 -1
  185. 1) "t1"
  186. 2) "a"
  187. 127.0.0.1:6379> blpop list4 3
  188. 1) "list4"
  189. 2) "t1"
  190. 127.0.0.1:6379> blpop list4 3
  191. 1) "list4"
  192. 2) "a"
  193. 127.0.0.1:6379> blpop list4 3                //因为list4已经无值,故3秒后退出
  194. (nil)
  195. (3.02s)
  196. 127.0.0.1:6379> lpush list1 a b c
  197. (integer) 6
  198. 127.0.0.1:6379> lpush list2 a b c
  199. (integer) 5
  200. 127.0.0.1:6379> blpop list1 list2 3        
  201. //对多个列表返回头部并删除,无返回值后,等待3秒退出
  202. 1) "list1"
  203. 2) "c"            //删除list1中的c
  204. 127.0.0.1:6379> blpop list1 list2 3
  205. 1) "list1"
  206. 2) "b"            //删除list1中的b
  207. 127.0.0.1:6379> blpop list1 list2 3
  208. 1) "list1"
  209. 2) "a"
  210. 127.0.0.1:6379> blpop list1 list2 3
  211. 1) "list2"
  212. 2) "c"            //删除list2中c
  213. 127.0.0.1:6379> blpop list1 list2 3
  214. 1) "list2"
  215. 2) "b"            //删除lit2中的b
  216. 127.0.0.1:6379> blpop list1 list2 3
  217. 1) "list2"
  218. 2) "a"
  219. 127.0.0.1:6379> blpop list1 list2 3        //无值后,等待3秒退出
  220. (nil)
  221. (3.07s)
  222. 127.0.0.1:6379> lpush list1 a b c
  223. (integer) 3
  224. 127.0.0.1:6379> lrange list1 0 -1
  225. 1) "c"
  226. 2) "b"
  227. 3) "a"
  228. 127.0.0.1:6379> rpush list1 test            //往list1列表的尾部插入test
  229. (integer) 4
  230. 127.0.0.1:6379> lrange list1 0 -1
  231. 1) "c"
  232. 2) "b"
  233. 3) "a"
  234. 4) "test"            //被插入的值test
  235. 127.0.0.1:6379> rpushx list2 test            
  236. //仅当list2存在时,往末尾插入test,如list2不存在,则退出
  237. 127.0.0.1:6379> lpush list6 a b c        //定义list6
  238. (integer) 3
  239. 127.0.0.1:6379> lpush list7 1 2 3        //定义list7
  240. (integer) 3
  241. 127.0.0.1:6379> lrange list6 0 -1        //查看list6
  242. 1) "c"
  243. 2) "b"
  244. 3) "a"
  245. 127.0.0.1:6379> lrange list7 0 -1        //查看list7
  246. 1) "3"
  247. 2) "2"
  248. 3) "1"
  249. 127.0.0.1:6379> rpoplpush list6 list7        
  250. //将list6中尾部的a,插入到list7的头部(顶部)
  251. "a"
  252. 127.0.0.1:6379> lrange list6 0 -1        //验证结果
  253. 1) "c"
  254. 2) "b"
  255. 127.0.0.1:6379> lrange list7 0 -1        //验证结果
  256. 1) "a"
  257. 2) "3"
  258. 3) "2"
  259. 4) "1"

4)其他操作指南

 
  1. 127.0.0.1:6379> set mykey "hello"            //定义字符串变量
  2. OK
  3. 127.0.0.1:6379> get mykey                    //查看变量
  4. "hello"
  5. 127.0.0.1:6379> del mykey                    //删除变量
  6. (integer) 1
  7. 127.0.0.1:6379> get mykey                    //验证结果
  8. (nil)
  9. 127.0.0.1:6379> exists mykey                //测试变量是否存在
  10. (integer) 0
  11. 127.0.0.1:6379> set mykey "hello"            //定义变量即值
  12. OK
  13. 127.0.0.1:6379> exists mykey                //测试变量是否存在
  14. (integer) 1
  15. 127.0.0.1:6379> expire mykey 5                //设置变量过期时间为5秒
  16. (integer) 1
  17. 127.0.0.1:6379> get mykey                    //查看有值
  18. "hello"
  19. 127.0.0.1:6379> get mykey
  20. "hello"
  21. 127.0.0.1:6379> get mykey                    //5秒后查看,无值
  22. (nil)
  23. 127.0.0.1:6379> set mykey "hello"            //设置变量
  24. OK
  25. 127.0.0.1:6379> expire mykey 10            //定义过期时间
  26. (integer) 1
  27. 127.0.0.1:6379> persist mykey                //重新定义过期时间为,永久有效
  28. (integer) 1
  29. 127.0.0.1:6379> get mykey
  30. "hello"
  31. 127.0.0.1:6379> get mykey
  32. "hello"
  33. 127.0.0.1:6379> ttl mykey
  34. (integer) -1        //永不过期
  35. 127.0.0.1:6379> expire mykey 10        //定义过期时间
  36. (integer) 1
  37. 127.0.0.1:6379> ttl mykey                //查看过期时间
  38. (integer) 9
  39. 127.0.0.1:6379> ttl mykey
  40. (integer) 8
  41. 127.0.0.1:6379> ttl mykey
  42. (integer) 7
  43. 127.0.0.1:6379> ttl mykey
  44. (integer) 6
  45. 127.0.0.1:6379> ttl mykey
  46. (integer) 5
  47. 127.0.0.1:6379> ttl mykey
  48. (integer) 4
  49. 127.0.0.1:6379> ttl mykey
  50. (integer) 3
  51. 127.0.0.1:6379> ttl mykey
  52. (integer) 3
  53. 127.0.0.1:6379> ttl mykey
  54. (integer) 2
  55. 127.0.0.1:6379> ttl mykey
  56. (integer) 1
  57. 127.0.0.1:6379> ttl mykey
  58. (integer) -2        //已经过期
  59. 127.0.0.1:6379> get mykey        //查看mykey的值已经为空
  60. (nil)
  61. 127.0.0.1:6379> set mykey "hello"
  62. OK
  63. 127.0.0.1:6379> keys *        //查看数据库下所有数据
  64. 1) "string6"
  65. 2) "list7"
  66. 3) "mykey"
  67. 4) "string4"
  68. 5) "db"
  69. 6) "num"
  70. 7) "result"
  71. 8) "hkey"
  72. 9) "string5"
  73. 10) "string1"
  74. 11) "bit1"
  75. 12) "page"
  76. 13) "bit2"
  77. 14) "site"
  78. 15) "string2"
  79. 16) "list1"
  80. 17) "string3"
  81. 18) "list6"
  82. 127.0.0.1:6379> keys li*
  83. 1) "list7"
  84. 2) "list1"
  85. 3) "list6"
  86. 127.0.0.1:6379> keys s*
  87. 1) "string6"
  88. 2) "string4"
  89. 3) "string5"
  90. 4) "string1"
  91. 5) "site"
  92. 6) "string2"
  93. 7) "string3"
  94. 127.0.0.1:6379> keys string[15]        //查看string1或string5
  95. 1) "string5"
  96. 2) "string1"
  97. 127.0.0.1:6379> keys string[0-9]        //查看string0值9的数据
  98. 1) "string6"
  99. 2) "string4"
  100. 3) "string5"
  101. 4) "string1"
  102. 5) "string2"
  103. 6) "string3"
  104. 127.0.0.1:6379> keys ?it*        //使用通配符所有数据
  105. 1) "bit1"
  106. 2) "bit2"
  107. 127.0.0.1:6379> select 1        //进入1数据库,默认数据库为0
  108. OK
  109. 127.0.0.1:6379[1]> keys *        //在新数据库中查看数据为空
  110. (empty list or set)
  111. 127.0.0.1:6379[1]> set test "test"        //在数据库1中创建变量
  112. OK
  113. 127.0.0.1:6379[1]> get test            //查看变量的值
  114. "test"
  115. 127.0.0.1:6379[1]> select 2            //进入2数据库
  116. OK
  117. 127.0.0.1:6379[2]> keys *                //查看所有数据
  118. (empty list or set)
  119. 127.0.0.1:6379[2]> select 1
  120. OK
  121. 127.0.0.1:6379[1]> keys *
  122. 1) "test"
  123. 127.0.0.1:6379[1]> select 0
  124. OK
  125. 127.0.0.1:6379> keys *
  126. 1) "string6"
  127. 2) "list7"
  128. 3) "mykey"
  129. 4) "string4"
  130. 5) "db"
  131. 6) "num"
  132. 7) "result"
  133. 8) "hkey"
  134. 9) "string5"
  135. 10) "string1"
  136. 11) "bit1"
  137. 12) "page"
  138. 13) "bit2"
  139. 14) "site"
  140. 15) "string2"
  141. 16) "list1"
  142. 17) "string3"
  143. 18) "list6"
  144. 127.0.0.1:6379> flushall        //清空所有数据
  145. OK
  146. 127.0.0.1:6379> keys *        //验证结果
  147. 127.0.0.1:6379[2]> select 0
  148. OK
  149. 127.0.0.1:6379> set mykey "hello"
  150. OK
  151. 127.0.0.1:6379> keys *
  152. 1) "mykey"
  153. 127.0.0.1:6379> select 1
  154. OK
  155. 127.0.0.1:6379[1]> keys *
  156. (empty list or set)
  157. 127.0.0.1:6379[1]> select 0
  158. OK
  159. 127.0.0.1:6379> keys *
  160. 1) "mykey"
  161. 127.0.0.1:6379> move mykey 1        //将数据库0中的mykey变量移动至数据库1
  162. (integer) 1
  163. 127.0.0.1:6379> keys *        //在数据库0中查看为空
  164. (empty list or set)
  165. 127.0.0.1:6379> select 1        //进入数据库1
  166. OK
  167. 127.0.0.1:6379[1]> keys *        //查看所有数据库
  168. 1) "mykey"
  169. 127.0.0.1:6379[1]> get mykey        //查看mykey的值
  170. "hello"
  171. 127.0.0.1:6379[1]> rename mykey testkey        //对变量进行重命名
  172. OK
  173. 127.0.0.1:6379[1]> keys *
  174. 1) "testkey"
  175. 127.0.0.1:6379[1]> get testkey
  176. "hello"
  177. 127.0.0.1:6379[1]> set name1 tom
  178. OK
  179. 127.0.0.1:6379[1]> set name2 jerry
  180. OK
  181. 127.0.0.1:6379[1]> rename name1 name2
  182. OK
  183. 127.0.0.1:6379[1]> keys *
  184. 1) "testkey"
  185. 2) "name2"
  186. 127.0.0.1:6379[1]> get name2        //name2被覆盖
  187. "tom"
  188. 127.0.0.1:6379[1]> set name1 tom
  189. OK
  190. 127.0.0.1:6379[1]> set name2 jerry
  191. OK
  192. 127.0.0.1:6379[1]> renamenx name1 name2        //仅在name2不存在才进行重命名
  193. (integer) 0
  194. 127.0.0.1:6379[1]> keys *                        //name1和name2无变化
  195. 1) "name1"
  196. 2) "testkey"
  197. 3) "name2"
  198. 127.0.0.1:6379[1]> get name1
  199. "tom"
  200. 127.0.0.1:6379[1]> get name2
  201. "jerry"
  202. 127.0.0.1:6379[1]> lpush cost 1 8 7 2 5        //创建列表cost
  203. (integer) 5
  204. 127.0.0.1:6379[1]> sort cost                    //对列表值进行排序
  205. 1) "1"
  206. 2) "2"
  207. 3) "5"
  208. 4) "7"
  209. 5) "8"
  210. 127.0.0.1:6379[1]> lpush test "about" "site"
  211. (integer) 2
  212. 127.0.0.1:6379[1]> sort test alpha            //对列表进行排序,按字母顺序排列
  213. 1) "about"
  214. 2) "site"
  215. 127.0.0.1:6379[1]> lpush test a f c e g i
  216. (integer) 8
  217. 127.0.0.1:6379[1]> sort test alpha
  218. 1) "a"
  219. 2) "about"
  220. 3) "c"
  221. 4) "e"
  222. 5) "f"
  223. 6) "g"
  224. 7) "i"
  225. 8) "site"
  226. 127.0.0.1:6379[1]> lpush test a f c e g i
  227. (integer) 14
  228. 127.0.0.1:6379[1]> sort test alpha
  229. 1) "a"
  230. 2) "a"
  231. 3) "about"
  232. 4) "c"
  233. 5) "c"
  234. 6) "e"
  235. 7) "e"
  236. 8) "f"
  237. 9) "f"
  238. 10) "g"
  239. 11) "g"
  240. 12) "i"
  241. 13) "i"
  242. 14) "site"
  243. 127.0.0.1:6379[1]> sort test alpha limit 0 3    //排序后,仅显示0至3位的值
  244. 1) "a"
  245. 2) "a"
  246. 3) "about"
  247. 127.0.0.1:6379[1]> sort test alpha limit 0 3
  248. 1) "a"
  249. 2) "a"
  250. 3) "about"
  251. 127.0.0.1:6379[1]> sort test alpha limit 0 3 desc    //倒序排列
  252. 1) "site"
  253. 2) "i"
  254. 3) "i"
  255. 127.0.0.1:6379[1]> sort test alpha limit 0 3 desc store cost2
  256. //将排序后的结果存入cost2
  257. (integer) 3
  258. 127.0.0.1:6379[1]> keys *
  259. 1) "test"
  260. 2) "c"
  261. 3) "cost"
  262. 4) "a"
  263. 5) "name1"
  264. 6) "name2"
  265. 7) "testkey"
  266. 8) "b"
  267. 9) "cost2"
  268. 127.0.0.1:6379[1]> lrange cost2 0 -1        //查看cost2中的值
  269. 1) "site"
  270. 2) "i"
  271. 3) "i"
  272. 127.0.0.1:6379[1]> type cost2                //查看cost2的数据类型
  273. list
  274. 127.0.0.1:6379[1]> set name tom
  275. OK
  276. 127.0.0.1:6379[1]> type name                //查看name的数据类型
  277. string

3 配置Redis主从服务器

3.1 问题

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

  1. 主服务器IP为192.168.4.10
  2. 从服务器IP为192.168.4.20
  3. 主服务器认证密码为password
  4. 测试主从数据是否正常通过

3.2 方案

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

图-1

3.3 步骤

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

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

1)主服务器安装Redis

 
  1. [root@svr10 ~]# tar -xzf redis-3.0.6.tar.gz
  2. [root@svr10 ~]# cd redis-3.0.6
  3. [root@svr10 ~]# make
  4. [root@svr10 ~]# make install
  5. [root@svr10 ~]# cd utils/
  6. [root@svr10 ~]#./install_server.sh
  7. Welcome to the redis service installer
  8. This script will help you easily set up a running redis server
  9. Please select the redis port for this instance: [6379]
  10. Selecting default: 6379
  11. Please select the redis config file name [/etc/redis/6379.conf]
  12. Selected default - /etc/redis/6379.conf
  13. Please select the redis log file name [/var/log/redis_6379.log]
  14. Selected default - /var/log/redis_6379.log
  15. Please select the data directory for this instance [/var/lib/redis/6379]
  16. Selected default - /var/lib/redis/6379
  17. Please select the redis executable path [/usr/local/bin/redis-server]
  18. Selected config:
  19. Port : 6379
  20. Config file : /etc/redis/6379.conf
  21. Log file : /var/log/redis_6379.log
  22. Data dir : /var/lib/redis/6379
  23. Executable : /usr/local/bin/redis-server
  24. Cli Executable : /usr/local/bin/redis-cli
  25. Is this ok? Then press ENTER to go on or Ctrl-C to abort.
  26. Copied /tmp/6379.conf => /etc/init.d/redis_6379
  27. Installing service...
  28. Successfully added to chkconfig!
  29. Successfully added to runlevels 345!
  30. Starting Redis server...
  31. Installation successful!

2)从服务器安装Redis

 
  1. [root@svr20 ~]# tar -xzf redis-3.0.6.tar.gz
  2. [root@svr20 ~]# cd redis-3.0.6
  3. [root@svr20 ~]# make
  4. [root@svr20 ~]# make install
  5. [root@svr20 ~]# cd utils/
  6. [root@svr20 ~]#./install_server.sh
  7. Welcome to the redis service installer
  8. This script will help you easily set up a running redis server
  9. Please select the redis port for this instance: [6379]
  10. Selecting default: 6379
  11. Please select the redis config file name [/etc/redis/6379.conf]
  12. Selected default - /etc/redis/6379.conf
  13. Please select the redis log file name [/var/log/redis_6379.log]
  14. Selected default - /var/log/redis_6379.log
  15. Please select the data directory for this instance [/var/lib/redis/6379]
  16. Selected default - /var/lib/redis/6379
  17. Please select the redis executable path [/usr/local/bin/redis-server]
  18. Selected config:
  19. Port : 6379
  20. Config file : /etc/redis/6379.conf
  21. Log file : /var/log/redis_6379.log
  22. Data dir : /var/lib/redis/6379
  23. Executable : /usr/local/bin/redis-server
  24. Cli Executable : /usr/local/bin/redis-cli
  25. Is this ok? Then press ENTER to go on or Ctrl-C to abort.
  26. Copied /tmp/6379.conf => /etc/init.d/redis_6379
  27. Installing service...
  28. Successfully added to chkconfig!
  29. Successfully added to runlevels 345!
  30. Starting Redis server...
  31. Installation successful!

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

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

 
  1. [root@svr10 ~]# vim /etc/redis/6379.conf
  2. requirepass redis123                            //设置服务器密码
  3. [root@svr10 ~]# /etc/init.d/redis_6379 restart    //重启服务

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

 
  1. [root@svr20 ~]# vim /etc/redis/6379.conf
  2. slaveof 192.1684.10 6379
  3. masterauth redis123
  4. [root@svr20 ~]# /etc/init.d/redis_6379 restart

步骤三:客户端验证效果

 
  1. [root@client ~]# redis-cli –h 192.168.4.10 –a redis123    //登录主服务器设置数据
  2. 192.168.4.10:6379> set test 123456
  3. OK
  4. [root@client ~]# redis-cli –h 192.168.4.20            //登录主服务器查看数据同步效果
  5. 192.168.4.20:6379> set test
  6. 123456”

 

 

 

Linux安装redis和部署

 

第一步:下载安装包

      访问https://redis.io/download  到官网进行下载。这里下载最新的4.0版本.

      

第二步:安装

      1.通过远程管理工具,将压缩包拷贝到Linux服务器中,执行解压操作

       

       tar -zxf redis-4.0.9.tar.gz

       2.进入解压文件目录使用make对解压的Redis文件进行编译

       图示:这里因为我redis的安装目录在 /usr/locat/  目录下,因此会有如下操作

      

      

      注:如果在编译过程中出现问题,有可能是安装包下载的有误,这里可以尝试的用别人下载的安装包或者直接用

      wget http://download.redis.io/releases/redis-4.0.9.tar.gz

      如果发现上述读不能解决问题,请参照该链接:https://www.cnblogs.com/liu2-/p/6914159.html

      编译完成之后,可以看到解压文件redis-3.0.7 中会有对应的src、conf等文件夹

      

      3.编译成功后,进入src文件夹,执行make install进行Redis安装。

       如下图示安装完成,界面如下:
      

 第三步:部署

        1.为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件中

            1)、创建bin和etc文件

                  如图示:

                  

           2)、回到刚刚安装目录,找到redis.conf,将其复制移动到 /usr/local/redis/ect 下

                  执行命令如下:

                  mv redis.conf /usr/local/redis/etc/

                  

 

                  进入src目录,移动mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server到/usr/local/redis/bin/

                  执行命令 :mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-server /usr/local/redis/bin/

                  

                 依次查看移动后文件

                 

         2、执行redis-server 启动redis

                 

      3、设置绑定ip(注:该步骤如果不需要可省略)

          

        如需要,可将上图绑定ip改为指定ip。

      4、设置后台启动redis

            1)、首先编辑conf文件,将daemonize属性改为yes(表明需要在后台运行)

                   cd etc/
                   vim redis.conf

                  

                 将no修改为yes

            2)、再次启动redis服务,并指定启动服务配置文件

                  redis-server /usr/local/redis/etc/redis.conf

                 

                配置后台运行成功。

               参考文章:https://www.cnblogs.com/wangchunniu1314/p/6339416.html

转载于:https://www.cnblogs.com/linux985/p/11344273.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值