非关系型数据库---Redis安装与基本使用

打印 上一主题 下一主题

主题 884|帖子 884|积分 2654

一、数据库类型


  • 关系数据库管理系统(RDBMS)
  • 非关系数据库管理系统(NoSQL)
按照预先设置的组织机构,将数据存储在物理介质上(即:硬盘上)
数据之间可以做无关联操作 (例如: 多表查询,嵌套查询,外键等)
主流的RDBMS软件:MySQL、MariaDB、Oracle、DB2、SQL  Server;要存储的数据是有固定格式的(例如:要向银行存现金,需要录入:姓名,年龄,金额,家庭住址等),并且是永久存储的,类似这种对于同一个业务,录入数据的方式一样的采用关系型数据库。
二、NoSQL(NoSQL =  Not  Only  SQL)

意思是“不仅仅是SQL”
泛指非关系型数据库,不需要预先定义数据存储结构,每条记录可以有不同的 数据类型 和 字段个数
NoSQL主流软件:Memcached、Redis、MongoDB、Neo4j、FlockDB
三、Redis介绍

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

环境准备,创建template主机,ip地址为192.168.11.10
PS:官网稳定版6的版本,编译的时候一直报错找不到src目录
换成4版本成功的截图:

步骤一:直接wget下载到/root目录下
  1. [root@template ~]# wget -c http://download.redis.io/releases/redis-4.0.8.tar.gz
复制代码
步骤二:源码编译安装
  1. # 安装编译环境gcc gcc-c++
  2. [root@template~]# yum -y install gcc
  3. # 解压到指定目录,个人习惯
  4. [root@template ~]# tar xf redis-4.0.8.tar.gz -C /usr/local/
  5. # 进入目录
  6. [root@template ~]# cd /usr/local/redis-4.0.8/
  7. [root@template redis-4.0.8]# ls
  8. 00-RELEASENOTES  CONTRIBUTING  deps     Makefile   README.md   runtest          runtest-moduleapi  sentinel.conf  tests   utils
  9. BUGS             COPYING       INSTALL  MANIFESTO  redis.conf  runtest-cluster  runtest-sentinel   src            TLS.md
  10. # 编译安装
  11. [root@template redis-4.0.8]# make && make install
  12. # 测试
  13. [root@template redis-4.0.8]# redis-
  14. redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli        redis-sentinel   redis-server
复制代码
步骤三:初始配置,配置服务运行参数
  1. [root@template utils]# pwd
  2. /usr/local/redis-4.0.8/utils
  3. [root@template utils]# ./install_server.sh         执行源码目录下的初始化脚本
  4. 端口                                                6379
  5. 主配置文件                                        /etc/redis/6379.conf
  6. 日志文件                                                /var/log/redis_6379.log
  7. 数据库目录                                        /var/lib/redis/6379
  8. 服务启动程序                                        /usr/local/bin/redis-server
  9. 命令行连接命令                                        /usr/local/bin/redis-cli
  10. # 运行初始化脚本,一路回车即可
  11. Welcome to the redis service installer
  12. This script will help you easily set up a running redis server
复制代码

选择redis端口号:【6379】 回车确认

Please select the redis port for this instance: [6379]
Selecting default: 6379
选择redis主配置文件:【/etc/redis/6379.conf】  回车确认

Please select the redis config file name [/etc/redis/6379.conf]
Selected default - /etc/redis/6379.conf
选择redis日志文件:【/var/log/redis_6379.log】  回车确认

Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
选择redis数据库目录:【/var/lib/redis/6379】  回车确认

Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
选择redis启动程序:【/usr/local/bin/redis-server】  回车确认

Please select the redis executable path [/usr/local/bin/redis-server]
以上选择的配置
  1. Selected config:
  2. Port           : 6379
  3. Config file    : /etc/redis/6379.conf
  4. Log file       : /var/log/redis_6379.log
  5. Data dir       : /var/lib/redis/6379
  6. Executable     : /usr/local/bin/redis-server
  7. Cli Executable : /usr/local/bin/redis-cli
复制代码
确认,则选择回车即可;否则按 Ctrl + C 重新配置
  1. Is this ok? Then press ENTER to go on or Ctrl-C to abort.
  2. Copied /tmp/6379.conf => /etc/init.d/redis_6379
  3. Installing service...
  4. Successfully added to chkconfig!
  5. Successfully added to runlevels 345!
  6. Starting Redis server...
  7. Installation successful!         #安装成功
复制代码
步骤四:查看redis的启动端口号
  1. [root@template utils]# ss  -lntup | grep redis
  2. tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=9043,fd=6))
复制代码
步骤五:管理redis服务,通过脚本的方式停止redis的服务
  1. [root@template utils]# /etc/init.d/redis_6379 stop
  2. Stopping ...
  3. Redis stopped
  4. [root@template utils]#
  5. [root@template utils]#
  6. [root@template utils]# ss  -lntup | grep redis
复制代码
步骤六:重新开启redis服务
  1. [root@template utils]# /etc/init.d/redis_6379 start
  2. Starting Redis server...
  3. [root@template utils]# ss  -lntup | grep redis
  4. tcp    LISTEN     0      128    127.0.0.1:6379                  *:*                   users:(("redis-server",pid=10977,fd=6))
复制代码
步骤七:连接服务:redis-cli      默认连接本机的redis服务
  1. [root@template utils]# redis-cli
  2. # 使用ping命令,查看连接是否成功,结果是PONG,则代表redis正常连接
  3. 127.0.0.1:6379> ping
  4. PONG
  5. 127.0.0.1:6379>
  6. 127.0.0.1:6379> keys *                                #使用keys命令,查看当前库下的所有数据
  7. 127.0.0.1:6379> set school tarena                #使用set命令,存入数据,school:tarena
  8. 127.0.0.1:6379> get school                        #使用get命令,从内存中,取出变量"school"对应的值
  9. 127.0.0.1:6379> keys *                                #使用keys命令,查看当前库下的所有数据
  10. 127.0.0.1:6379> exit                                #断开redis连接
复制代码
五、基本操作命令

PS:可以借助官方文档:https://docs.redis.com/
  1. [root@template utils]# redis-cli
  2. 127.0.0.1:6379> ping
  3. PONG
  4. 127.0.0.1:6379>
  5. # set命令,存数据,给变量赋值(x:99)【给单个变量赋值】
  6. 127.0.0.1:6379> set x 99
  7. # mset命令,存数据,给变量赋值(i:77),(j:88),(k:99)【给多个变量同时赋值】
  8. 127.0.0.1:6379> mset i 77 j 88 k 99
  9. # get命令,取数据,获取变量i的值【获取单个变量的值】
  10. 127.0.0.1:6379> get i
  11. # mget命令,取数据,获取多个变量j,k,x的值【获取多个变量的值】
  12. 127.0.0.1:6379> mget i j k
  13. 1) "77"
  14. 2) "88"
  15. 3) "99"
  16. # keys命令,显示所有的变量名【* 代表所有】
  17. 127.0.0.1:6379> keys *
  18. 1) "j"
  19. 2) "i"
  20. 3) "k"
  21. 4) "x"
  22. # keys命令,显示变量名为一个字符的变量【? 代表单个字符】
  23. 127.0.0.1:6379> keys ?
  24. 1) "j"
  25. 2) "i"
  26. 3) "k"
  27. 4) "x"
  28. # keys命令,显示变量名为六个字符的变量【? 代表单个字符】
  29. 127.0.0.1:6379> keys ??????
  30. # keys命令,显示age的变量名,不存在,即为空
  31. 127.0.0.1:6379> keys age
  32. (empty list or set)
  33. # keys命令,显示school的变量名,存在
  34. 127.0.0.1:6379> keys school
  35. # type命令,查看变量i的类型【string 为字符类型】
  36. 127.0.0.1:6379> type i
  37. string
  38. # set命令,存数据,给z赋值(z:10)【给单个变量赋值】
  39. 127.0.0.1:6379> set z 10
  40. # type命令,查看变量z的类型【string 为字符类型】
  41. 127.0.0.1:6379> type z
  42. string
  43. # lpush命令,存数据,给变量赋值(hostname:pc99,pc88)【列表类型】
  44. 127.0.0.1:6379> lpush hostname pc99 pc88
  45. (integer) 2
  46. # type命令,查看变量hostname的类型【list 为列表类型】
  47. 127.0.0.1:6379> type hostname
  48. list
  49. # exists命令,检查变量是否存在,重复给一个变量赋值,会覆盖上一次变量的值
  50. 返回值为1,代表变量存在;返回值为0,则代表变量不存在
  51. 127.0.0.1:6379> exists hostname
  52. (integer) 1
  53. 注意:在redis中,使用set和mset存入的数据,数据类型都是字符类型
  54. # keys命令,查看redis中所有的变量
  55. 127.0.0.1:6379> keys *
  56. # ttl命令,查看变量有效期,-1 为永不过期【不重启redis服务和清空内存的情况下】
  57. 127.0.0.1:6379> ttl j
  58. (integer) -1
  59. # expire命令,设置变量j的有效期为20秒
  60. 127.0.0.1:6379> expire j 20
  61. (integer) 1
  62. # ttl命令,查看变量有效期,16秒
  63. 127.0.0.1:6379> ttl j
  64. (integer) 16
  65. # ttl命令,查看变量有效期,当变量的有效期为-2时,到期,该变量会被删除
  66. 127.0.0.1:6379> ttl j
  67. (integer) -2
  68. # exists命令,检查变量是否存在,变量被删除,返回值为1,代表变量存在;返回值为0,则代表变量不存在
  69. 127.0.0.1:6379> exists j
  70. (integer) 0
  71. # select命令,切换库,切换到编号3的库下
  72. 127.0.0.1:6379> select 3
  73. # 当前处于编号3库下, select命令,切换到编号1的库下
  74. 127.0.0.1:6379[3]> select 1
  75. OK
  76. # 当前处于编号1库下, select命令,切换到编号0的库下
  77. 127.0.0.1:6379[1]> select 0
  78. OK
  79. # 当前处于编号0库下,查看0库下所有的变量
  80. 127.0.0.1:6379> keys *
  81. # 将编号0库下的变量school,移动到编号1的库下
  82. 127.0.0.1:6379> move school 1
  83. (integer) 1
  84. # 将编号0库下的变量x,移动到编号2的库下
  85. 127.0.0.1:6379> move x 2
  86. (integer) 1
  87. # 编号0库下,变量school和变量x消失
  88. 127.0.0.1:6379> keys *
  89. # 查看编号1库下的所有变量,变量"school"移动过来了
  90. 127.0.0.1:6379> select 1
  91. 127.0.0.1:6379[1]> keys *
  92. # 查看编号2库下的所有变量,变量"x"移动过来了
  93. 127.0.0.1:6379[1]> select 2
  94. 127.0.0.1:6379[2]> keys *
  95. # save命令,把内存中的数据保存到硬盘中
  96. 127.0.0.1:6379[2]> save
  97. 127.0.0.1:6379[2]> exit
  98. # 执行save命令后,内存中的数据被保存到下面文件中
  99. [root@template utils]# ls /var/lib/redis/6379/
  100. dump.rdb
  101. # 连接数据库 redis-cli
  102. # del命令,删除变量i
  103. 127.0.0.1:6379> del i
  104. (integer) 1
  105. # flushdb命令,删除当前所在库下的所有数据
  106. 127.0.0.1:6379> flushdb
  107. # 查看编号0库下的所有变量,为空
  108. 127.0.0.1:6379> keys *
  109. 127.0.0.1:6379> select 1                #切换到其他库下,还有数据
  110. 127.0.0.1:6379[1]> keys *
  111. # flushall命令,删除redis所有库下的数据
  112. 127.0.0.1:6379[0]> flushall
  113. 127.0.0.1:6379[1]> keys *
  114. 127.0.0.1:6379[1]> select 2
  115. 127.0.0.1:6379[2]> keys *
  116. # shutdown停止服务
  117. 127.0.0.1:6379[2]> shutdown
  118. not connected> exit
  119. [root@template utils]]# ss -antlp | gre p6379
复制代码
六、配置文件解析

1、查看redis配置文件信息,修改配置时,在对应的模块下写即可
  1. [root@template ~]# vim /etc/redis/6379.conf
  2.                              .........
  3. ############################# INCLUDES ##############################
  4.                              .........
  5. ############################# MODULES ##############################
  6.                              .........
  7. ############################# NETWORK ##############################
  8.                              .........
  9. ############################# GENERAL ##############################
复制代码
2、数据单位,不区分字母大小写
  1. [root@template ~]# vim /etc/redis/6379.conf
  2. # 1k => 1000 bytes
  3. # 1kb => 1024 bytes
  4. # 1m => 1000000 bytes
  5. # 1mb => 1024*1024 bytes
  6. # 1g => 1000000000 bytes
  7. # 1gb => 1024*1024*1024 bytes
复制代码
3、查看redis常用配置信息

守护进程:指进程会一直存在,等待用户访问(耗资源,客户端访问速度快)
非守护进程:当服务运行后,如果一段时间内没有用户访问,服务会进入到休眠状态;当有用户访问时,服务会被唤醒,供用户去访问(节省资源,客户端访问速度慢一些)
  1.   70 bind 127.0.0.1                                #指定客户访问的IP地址,这里只允许本机访问
  2.   93 port 6379                                        #指定redis的访问端口
  3. 137 daemonize yes                                #以守护进程方式运行(进程一直存在,等待用户访问)
  4. 172 logfile /var/log/redis_6379.log        #记录redis运行的启动和运行过程中的信息
  5. 187 databases 16                                        #数据库个数,默认16个,可以修改
  6. 264 dir /var/lib/redis/6379                        #定义数据库目录
  7. 533 # maxclients 10000                        #客户端同时访问redis的并发数量,默认10000
复制代码
4、内存管理,查看内存清除策略
  1. .........
  2. 562 # MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
  3. 563 # is reached. You can select among five behaviors:
  4. 564 #
  5. 565 # volatile-lru ->  向redis中存入数据时,数据已满,则会在设置了TTL过期时间的变量中选择,删除最近最少使用的key,用于存放新的key;
  6. 566 # allkeys-lru ->   向redis中存入数据时,数据已满,则会在所有的变量中选择,删除最近最少使用的key,用于存放新的key;
  7. 567 # volatile-lfu ->  向redis中存入数据时,数据已满,则会在设置了TTL过期时间的变量中选择,删除使用频率最少的key,用于存放新的key;
  8. 568 # allkeys-lfu ->   向redis中存入数据时,数据已满,则会在所有的变量中选择,删除使用频率最少的key,用于存放新的key;
  9. 569 # volatile-random ->  向redis中存入数据时,数据已满,则会在设置了TTL过期时间的变量中选择,随机删除key,用于存放新的key;
  10. 570 # allkeys-random ->   向redis中存入数据时,数据已满,则会在所有的变量中选择,随机删除key,用于存放新的key;
  11. 571 # volatile-ttl ->  向redis中存入数据时,数据已满,删除最近过期的key;
  12. 572 # noeviction ->    向redis中存入数据时,数据已满,显示报错提示;   
复制代码
5、内存优化设置,

从物理内存中划分多少内存给redis使用,这里没有指定,则代表将本机的所有物理内存交给redis去使用
  1. 560 # maxmemory <bytes>
  2. #maxmemory-policy 定义当内存空间不足时,删除已存储数据的方式,策略为 noeviction,即,即使内存使用完了,也不删除已存储的数据
  3. 591 # maxmemory-policy noeviction   
  4. #当使用lru,lfu,ttl 策略时,需要指定key模板的个数
  5. 602 # maxmemory-samples 5
复制代码
6、修改redis运行参数,修改密码,IP地址和端口号
  1. [root@template ~]# /etc/init.d/redis_6379 stop                #停掉redis的服务
  2. [root@template ~]# vim /etc/redis/6379.conf
  3. 70 bind 192.168.4.50                #如果想让其他主机访问本机,修改监听地址为本机网卡地址
  4. 93 port 6350                           #修改端口号为6350
  5. 501 requirepass 123456                #取消注释,修改用户连接redis的密码为123456
  6. 启动redis的服务
  7. [root@template ~]# /etc/init.d/redis_6379 start
  8. 查看redis服务的端口号
  9. [root@template ~]# ss -ntulp | grep redis
复制代码
七、连接redis服务

方法一:登录redis以后,输入连接密码

-h 指定要连接的主机,-p(小写)  指定连接端口号
  1. [root@template ~]# redis-cli -h 192.168.4.50 -p 6350
  2. 192.168.4.50:6350> auth 123456                #auth 后跟上连接密码,否则无法正常使用
  3. 192.168.4.50:6350> ping
  4. 192.168.4.50:6350> exit
复制代码
方法二:连接redis时,输入连接密码
-a  指定连接密码
  1. [root@template ~]# redis-cli -h 192.168.4.50  -p 6350 -a 123456
  2. 192.168.4.50:6350> ping
  3. 192.168.4.50:6350> exit
复制代码
八、停止redis服务

当修改了redis服务的IP地址,密码和端口号以后,则无法通过脚本来停止redis服务
脚本停止服务针对的是redis服务默认的IP地址,密码和端口号
连接上redis, 使用shutdown来停止服务
  1. [root@template ~]# redis-cli -h 192.168.4.50  -p 6350 -a 123456 shutdown
  2. [root@template ~]# ss -ntulp | grep redis
  3. [root@template ~]# /etc/init.d/redis_6379 start                #启动服务
复制代码
出处:http://www.cnblogs.com/sre-chan/-------------------------------------------
个性签名:今天做了别人不想做的事,明天你就做得到别人做不到的事,尝试你都不敢,你拿什么赢!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

南七星之家

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表