一、数据库类型

  • 关系数据库管理系统(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目录下

[root@template ~]# wget -c http://download.redis.io/releases/redis-4.0.8.tar.gz

步骤二:源码编译安装

# 安装编译环境gcc gcc-c++
[root@template~]# yum -y install gcc # 解压到指定目录,个人习惯
[root@template ~]# tar xf redis-4.0.8.tar.gz -C /usr/local/ # 进入目录
[root@template ~]# cd /usr/local/redis-4.0.8/
[root@template redis-4.0.8]# ls
00-RELEASENOTES CONTRIBUTING deps Makefile README.md runtest runtest-moduleapi sentinel.conf tests utils
BUGS COPYING INSTALL MANIFESTO redis.conf runtest-cluster runtest-sentinel src TLS.md # 编译安装
[root@template redis-4.0.8]# make && make install # 测试
[root@template redis-4.0.8]# redis-
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server

步骤三:初始配置,配置服务运行参数

[root@template utils]# pwd
/usr/local/redis-4.0.8/utils
[root@template 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 # 运行初始化脚本,一路回车即可
Welcome to the redis service installer
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]

以上选择的配置

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

确认,则选择回车即可;否则按 Ctrl + C 重新配置

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! #安装成功

步骤四:查看redis的启动端口号

[root@template utils]# ss  -lntup | grep redis
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=9043,fd=6))

步骤五:管理redis服务,通过脚本的方式停止redis的服务

[root@template utils]# /etc/init.d/redis_6379 stop
Stopping ...
Redis stopped
[root@template utils]#
[root@template utils]#
[root@template utils]# ss -lntup | grep redis

步骤六:重新开启redis服务

[root@template utils]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@template utils]# ss -lntup | grep redis
tcp LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=10977,fd=6))

步骤七:连接服务:redis-cli 默认连接本机的redis服务

[root@template utils]# redis-cli

# 使用ping命令,查看连接是否成功,结果是PONG,则代表redis正常连接
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
127.0.0.1:6379> keys * #使用keys命令,查看当前库下的所有数据
127.0.0.1:6379> set school tarena #使用set命令,存入数据,school:tarena
127.0.0.1:6379> get school #使用get命令,从内存中,取出变量"school"对应的值
127.0.0.1:6379> keys * #使用keys命令,查看当前库下的所有数据
127.0.0.1:6379> exit #断开redis连接

五、基本操作命令

PS:可以借助官方文档:https://docs.redis.com/

[root@template utils]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> # set命令,存数据,给变量赋值(x:99)【给单个变量赋值】
127.0.0.1:6379> set x 99 # mset命令,存数据,给变量赋值(i:77),(j:88),(k:99)【给多个变量同时赋值】
127.0.0.1:6379> mset i 77 j 88 k 99 # get命令,取数据,获取变量i的值【获取单个变量的值】
127.0.0.1:6379> get i # mget命令,取数据,获取多个变量j,k,x的值【获取多个变量的值】
127.0.0.1:6379> mget i j k
1) "77"
2) "88"
3) "99" # keys命令,显示所有的变量名【* 代表所有】
127.0.0.1:6379> keys *
1) "j"
2) "i"
3) "k"
4) "x" # keys命令,显示变量名为一个字符的变量【? 代表单个字符】
127.0.0.1:6379> keys ?
1) "j"
2) "i"
3) "k"
4) "x" # keys命令,显示变量名为六个字符的变量【? 代表单个字符】
127.0.0.1:6379> keys ?????? # keys命令,显示age的变量名,不存在,即为空
127.0.0.1:6379> keys age
(empty list or set) # keys命令,显示school的变量名,存在
127.0.0.1:6379> keys school # type命令,查看变量i的类型【string 为字符类型】
127.0.0.1:6379> type i
string # set命令,存数据,给z赋值(z:10)【给单个变量赋值】
127.0.0.1:6379> set z 10 # type命令,查看变量z的类型【string 为字符类型】
127.0.0.1:6379> type z
string # lpush命令,存数据,给变量赋值(hostname:pc99,pc88)【列表类型】
127.0.0.1:6379> lpush hostname pc99 pc88
(integer) 2 # type命令,查看变量hostname的类型【list 为列表类型】
127.0.0.1:6379> type hostname
list # exists命令,检查变量是否存在,重复给一个变量赋值,会覆盖上一次变量的值
返回值为1,代表变量存在;返回值为0,则代表变量不存在
127.0.0.1:6379> exists hostname
(integer) 1 注意:在redis中,使用set和mset存入的数据,数据类型都是字符类型 # keys命令,查看redis中所有的变量
127.0.0.1:6379> keys * # ttl命令,查看变量有效期,-1 为永不过期【不重启redis服务和清空内存的情况下】
127.0.0.1:6379> ttl j
(integer) -1 # expire命令,设置变量j的有效期为20秒
127.0.0.1:6379> expire j 20
(integer) 1 # ttl命令,查看变量有效期,16秒
127.0.0.1:6379> ttl j
(integer) 16 # ttl命令,查看变量有效期,当变量的有效期为-2时,到期,该变量会被删除
127.0.0.1:6379> ttl j
(integer) -2 # exists命令,检查变量是否存在,变量被删除,返回值为1,代表变量存在;返回值为0,则代表变量不存在
127.0.0.1:6379> exists j
(integer) 0 # select命令,切换库,切换到编号3的库下
127.0.0.1:6379> select 3 # 当前处于编号3库下, select命令,切换到编号1的库下
127.0.0.1:6379[3]> select 1
OK # 当前处于编号1库下, select命令,切换到编号0的库下
127.0.0.1:6379[1]> select 0
OK # 当前处于编号0库下,查看0库下所有的变量
127.0.0.1:6379> keys * # 将编号0库下的变量school,移动到编号1的库下
127.0.0.1:6379> move school 1
(integer) 1 # 将编号0库下的变量x,移动到编号2的库下
127.0.0.1:6379> move x 2
(integer) 1 # 编号0库下,变量school和变量x消失
127.0.0.1:6379> keys * # 查看编号1库下的所有变量,变量"school"移动过来了
127.0.0.1:6379> select 1
127.0.0.1:6379[1]> keys * # 查看编号2库下的所有变量,变量"x"移动过来了
127.0.0.1:6379[1]> select 2
127.0.0.1:6379[2]> keys * # save命令,把内存中的数据保存到硬盘中
127.0.0.1:6379[2]> save
127.0.0.1:6379[2]> exit # 执行save命令后,内存中的数据被保存到下面文件中
[root@template utils]# ls /var/lib/redis/6379/
dump.rdb # 连接数据库 redis-cli
# del命令,删除变量i
127.0.0.1:6379> del i
(integer) 1 # flushdb命令,删除当前所在库下的所有数据
127.0.0.1:6379> flushdb # 查看编号0库下的所有变量,为空
127.0.0.1:6379> keys * 127.0.0.1:6379> select 1 #切换到其他库下,还有数据
127.0.0.1:6379[1]> keys * # flushall命令,删除redis所有库下的数据
127.0.0.1:6379[0]> flushall
127.0.0.1:6379[1]> keys *
127.0.0.1:6379[1]> select 2
127.0.0.1:6379[2]> keys *
# shutdown停止服务
127.0.0.1:6379[2]> shutdown
not connected> exit
[root@template utils]]# ss -antlp | gre p6379

六、配置文件解析

1、查看redis配置文件信息,修改配置时,在对应的模块下写即可

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

                             .........
############################# INCLUDES ##############################
.........
############################# MODULES ##############################
.........
############################# NETWORK ##############################
.........
############################# GENERAL ##############################

2、数据单位,不区分字母大小写

[root@template ~]# vim /etc/redis/6379.conf
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes

3、查看redis常用配置信息

守护进程:指进程会一直存在,等待用户访问(耗资源,客户端访问速度快)

非守护进程:当服务运行后,如果一段时间内没有用户访问,服务会进入到休眠状态;当有用户访问时,服务会被唤醒,供用户去访问(节省资源,客户端访问速度慢一些)

  70 bind 127.0.0.1				#指定客户访问的IP地址,这里只允许本机访问
93 port 6379 #指定redis的访问端口
137 daemonize yes #以守护进程方式运行(进程一直存在,等待用户访问)
172 logfile /var/log/redis_6379.log #记录redis运行的启动和运行过程中的信息
187 databases 16 #数据库个数,默认16个,可以修改
264 dir /var/lib/redis/6379 #定义数据库目录
533 # maxclients 10000 #客户端同时访问redis的并发数量,默认10000

4、内存管理,查看内存清除策略

.........
562 # MAXMEMORY POLICY: how Redis will select what to remove when maxmemory
563 # is reached. You can select among five behaviors:
564 #
565 # volatile-lru -> 向redis中存入数据时,数据已满,则会在设置了TTL过期时间的变量中选择,删除最近最少使用的key,用于存放新的key; 566 # allkeys-lru -> 向redis中存入数据时,数据已满,则会在所有的变量中选择,删除最近最少使用的key,用于存放新的key; 567 # volatile-lfu -> 向redis中存入数据时,数据已满,则会在设置了TTL过期时间的变量中选择,删除使用频率最少的key,用于存放新的key; 568 # allkeys-lfu -> 向redis中存入数据时,数据已满,则会在所有的变量中选择,删除使用频率最少的key,用于存放新的key; 569 # volatile-random -> 向redis中存入数据时,数据已满,则会在设置了TTL过期时间的变量中选择,随机删除key,用于存放新的key; 570 # allkeys-random -> 向redis中存入数据时,数据已满,则会在所有的变量中选择,随机删除key,用于存放新的key; 571 # volatile-ttl -> 向redis中存入数据时,数据已满,删除最近过期的key;
572 # noeviction -> 向redis中存入数据时,数据已满,显示报错提示;

5、内存优化设置,

从物理内存中划分多少内存给redis使用,这里没有指定,则代表将本机的所有物理内存交给redis去使用

560 # maxmemory <bytes> 

#maxmemory-policy 定义当内存空间不足时,删除已存储数据的方式,策略为 noeviction,即,即使内存使用完了,也不删除已存储的数据
591 # maxmemory-policy noeviction #当使用lru,lfu,ttl 策略时,需要指定key模板的个数
602 # maxmemory-samples 5

6、修改redis运行参数,修改密码,IP地址和端口号

[root@template ~]# /etc/init.d/redis_6379 stop		#停掉redis的服务
[root@template ~]# vim /etc/redis/6379.conf
70 bind 192.168.4.50 #如果想让其他主机访问本机,修改监听地址为本机网卡地址
93 port 6350 #修改端口号为6350
501 requirepass 123456 #取消注释,修改用户连接redis的密码为123456 启动redis的服务
[root@template ~]# /etc/init.d/redis_6379 start
查看redis服务的端口号
[root@template ~]# ss -ntulp | grep redis

七、连接redis服务

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

-h 指定要连接的主机,-p(小写) 指定连接端口号

[root@template ~]# redis-cli -h 192.168.4.50 -p 6350
192.168.4.50:6350> auth 123456 #auth 后跟上连接密码,否则无法正常使用
192.168.4.50:6350> ping
192.168.4.50:6350> exit

方法二:连接redis时,输入连接密码

-a 指定连接密码

[root@template ~]# redis-cli -h 192.168.4.50  -p 6350 -a 123456
192.168.4.50:6350> ping
192.168.4.50:6350> exit

八、停止redis服务

当修改了redis服务的IP地址,密码和端口号以后,则无法通过脚本来停止redis服务

脚本停止服务针对的是redis服务默认的IP地址,密码和端口号

连接上redis, 使用shutdown来停止服务

[root@template ~]# redis-cli -h 192.168.4.50  -p 6350 -a 123456 shutdown
[root@template ~]# ss -ntulp | grep redis
[root@template ~]# /etc/init.d/redis_6379 start #启动服务

非关系型数据库---Redis安装与基本使用的更多相关文章

  1. JavaWeb笔记(十)非关系型数据库Redis

    Redis Redis是一款高性能的NOSQL系列的非关系型数据库 主流的NOSQL产品 键值(Key-Value)存储数据库 相关产品: Tokyo Cabinet/Tyrant.Redis.Vol ...

  2. 非关系型数据库--redis

    0.1 新单词 expire 美 /ɪk'spaɪɚ/ 到期 range 美 /rendʒ/ 范围 idle美 /'aɪdl/ 闲置的 0.2 面试题:mysql和redis和memcached区别? ...

  3. 非关系型数据库redis

    Redis初始 redis中不区分字母的大小写 查看端口 ss tnlp 安装 编译安装(需要先配置epel源) yum install -y redis 编译安装 wget https://down ...

  4. Python进阶----数据库的基础,关系型数据库与非关系型数据库(No SQL:not only sql),mysql数据库语言基础(增删改查,权限设定)

    day37 一丶Python进阶----数据库的基础,mysql数据库语言基础(增删改查,权限设定) 什么是数据库:    简称:DataBase ---->DB    数据库即存放数据的仓库, ...

  5. Redis非关系型数据库

    1.简介 Redis是一个基于内存的Key-Value非关系型数据库,由C语言进行编写. Redis一般作为分布式缓存框架.分布式下的SESSION分离.分布式锁的实现等等. Redis速度快的原因: ...

  6. 数据库基础 非关系型数据库 MongoDB 和 redis

    数据库基础 非关系型数据库 MongoDB 和 redis 1 NoSQL简介 访问量增加,频繁的读写 直接访问(硬盘)物理级别的数据,会很慢 ,关系型数据库的压力会很大 所以,需要内存级的读写操作, ...

  7. Redis 01: 非关系型数据库 + 配置Redis

    数据库应用的发展历程 单机数据库时代:一个应用,一个数据库实例 缓存时代:对某些表中的数据访问频繁,则对这些数据设置缓存(此时数据库中总的数据量不是很大) 水平切分时代:将数据库中的表存放到不同数据库 ...

  8. python 之操作redis数据库(非关系型数据库,k-v)

    数据库: 1. 关系型数据库 表结构 2. 非关系型数据库 nosql (k - v 速度快),常用的时以下三种: memcache 存在内存里 redis 存在内存里 mangodb 数据还是存在磁 ...

  9. Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念

    Java Redis系列1 关系型数据库与非关系型数据库的优缺点及概念 在学习redis之前我们先来学习两个概念,即什么是关系型数据库什么是非关系型数据库,二者的区别是什么,二者的关系又是什么? ** ...

  10. NoSql非关系型数据库之MongoDB应用(二):安装MongoDB可视化工具

    业精于勤,荒于嬉:行成于思,毁于随. 我们上次说到NoSql非关系型数据库之MongoDB应用(一):安装MongoDB服务 这次我们介绍安装  NoSQL Manager for MongoDB 可 ...

随机推荐

  1. SQL Server之Cross apply

    1 --这样是不行的 2 select sys.dm_exec_sql_text(most_recent_sql_handle) from sys.dm_exec_connections 3 4 -- ...

  2. 【QT5】学习整理包含引用资料

    视频学习资料 [[6天学会QT] 视频教程及QT5.11.1安装包安装方法][含代码]](https://www.bilibili.com/video/BV1hg4y1B7Vu?from=search ...

  3. C#处理JSON类型数据序列化和反序列化的一点心得体会

    在处理JSON类型的数据时,定义了很多JSON类型.经常需要用到序列化和反序列化.刚开始接触到这个问题时,我给每个JSON类型都增加了类似下方的代码. using System; using Syst ...

  4. Matlab:读取、写入(.txt)(.xlsx)

    写入txt a=[1,2,3;4,5,6]; save C:\Users\Administrator\Desktop\a.txt -ascii a 参考:https://blog.csdn.net/h ...

  5. MySQL 分组排序,取第一条

    select t1.* from coal_installed_capacity t1where NOT EXISTS (select * from coal_installed_capacity t ...

  6. winform 防止奔溃重启

    static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static vo ...

  7. mac git远程仓库错误解决方法

    mac更新后不知道怎么回事,git时出现了 Permission denied (publickey). 经查询后得出原因 1.首先给git进行config的配置 git config --globa ...

  8. 微软NewBing真是Niubility

    这是本人2012年的拙作:           晨兮,闻风雨,后而雷鸣电闪.迟不可再三,若故无食.然何如耶?雨大风狂,单车奈何?公交卡空,恐时不予我也.不免叹也,天亦不予我!         而后出, ...

  9. Java面试——Linux

    一.如果知道一个文件名称,怎么查这个文件在 Linux下的哪个目录,如:要查找 tnsnames.ora文件 1 find / -name tnsnames.ora 2 #还可以用locate 来查找 ...

  10. TCP三次握手,四次分手。个人感觉最容易理解的解释

    三次握手 名词解释 SYN,ACK,FIN存放在TCP的标志位,一共有6个字符,这里就介绍这三个: SYN:代表请求创建连接,所以在三次握手中前两次要SYN=1,表示这两次用于建立连接,至于第三次什么 ...