Nosql之Redis配置与优化(关系型,非关系型数据库,Redis简介和安装,命令行工具等等)

一:关系型数据库和非关系型数据库

1.1:关系型数据库

  • 一个结构化的数据库,创建在关系模型基础上

一般面向于记录
包括:oracle,MySQL,SQL server Microsoft Access,DB2等

1.2:非关系型数据库

  • 除了主流的关系型数据库外的数据库,都认为是非关系型数据库

包括:Redis MongBD,Hbase,CouhDB等

1.3 非关系型数据库产生背景

  • High performance—对数据库高并发读写要求
  • Huge Storage—对海量数据高效存储与访问需求
  • High Scalability && High Availability----对数据库高可扩展性与高可用性需求

二、Redis简介

Redis基于内存运行并支持持久化
采用key-value(键值对)的存储方式

在这里插入图片描述
它有着什么优点?

  • 具有极高的数据读写读写速度
  • 支持丰富的数据类型
  • 支持数据的持久化
  • 原子性
  • 支持数据备份

三、Redis安装部署

流程解析
在这里插入图片描述

3.1 编译安装Redis

先关闭防火墙和核心防护

systemctl stop firewalld
setenforce 0

上次软件包redis-5.0.7.tar到目录下

[root@localhost ]# yum -y install gcc gcc-c++ make -y       //安装gcc编译器,最小化安装需要进行安装,图型化安装默认已经安装
[root@localhost ]# tar zxvf redis-5.0.7.tar.gz   //进行解压
[root@localhost ]# cd redis-5.0.7/
[root@localhost redis-5.0.7]#make
[root@localhost redis-5.0.7]# make prefix=/usr/local/redis install       //指定到redis的目录下使它生效
[root@localhost redis-5.0.7]#ln -s /usr/local/redis/bin/* /usr/local/bin/
[root@localhost redis-5.0.7]# cd utils/
[root@localhost utils]# ./install_server.sh          //执行

3.2 设置Redis相关配置文件

解释:
Please select the redis port for this instance: [6379]               //选择你的端口,默认是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                 //客户端工具的存放路径

[root@localhost utils]# netstat -ntap | grep redis       //查看端口有没有启动

3.3 连接数据库

[root@localhost utils]# redis-cli -h 127.0.0.1 -p 6379       //本地地址可以直接连接
[root@localhost utils]# redis-cli -h 20.0.0.30 -p 6379 //连接redis,指定IP地址    -h:指定ip地址    -p:指定端口号
Could not connect to Redis at 192.168.247.206:6379: Connection refused       //报错信息
//显示不可以连接,本地可以直接登陆(127.0.0.1),若是想要指定IP地址,就需要在配置文件内添加监听地址

[root@localhost utils]# vim /etc/redis/6379.conf         //进去作修改

70行: bind 127.0.0.1 20.0.0.30       //后面添加
[root@localhost utils]# /etc/init.d/redis_6379 stop
[root@localhost utils]# /etc/init.d/redis_6379 start
[root@localhost utils]# redis-cli -h 20.0.0.30 -p 6379
20.0.0.30:6379>             //成功连接
配置参数(/etc/redis/6379.conf)
bind:监听的主机地址
port:端口
daemonize yes:启用守护进程
pidfile:指定PID文件
loglevel notice :日志级别
logfile:指定日志文件

四:命令行工具的用法

4.1:redis-cli

获取命令帮助
help @<group>: 获取<group>中的命令列表
help <command>: 获取某个命令的帮助
help <tab>: 获取可能帮助的主题列表
例如:
连接本地数据库
[root@localhost utils]# /usr/local/redis/bin/redis-cli
127.0.0.1:6379>
连接远程数据库
[root@localhost utils]# redis-cli -h 192.168.10.1 -p 6379
192.168.10.1:6379>
set: 存放数据
get: 获取数据
keys: 获取符合规则的键值列表,
exists:可以判断键值是否存在。
del:表示删除当前数据库的指定 key
type:获取 key 对应的 value 值类型
rename:是对已有 key 进行重命名,使用rename 命令进行重命名时, 无论目标 key 是否存在都进行重命名, 且源 key 的值会覆盖目标 key 的值
renamenx:是对已有 key 进行重命名,不会覆盖key的值
dbsize:查看当前数据库中key的数目

4.2:redis-benchmark 测试工具

  • redis-benchmark 是官方自带的 Redis 性能测试工具, 可以有效的测试 Redis 服务的性能。
  • 基本的测试语法:redis-benchmark [option] [option value]
-h: 指定服务器主机名。
-p: 指定服务器端口。
-c: 指定并发连接数。
-n: 指定请求数。
-d: 以字节的形式指定 SET/GET 值的数据大小。
-q: 强制退出 redis。 仅显示 query/sec 值。

4.3:Redis多数据库操作

  • Redis支持多数据库,默认支持16个数据库,0-15命名

  • 多数据库相互独立,互不干扰

  • 数据库可以迁移数据库

多数据库常用命令

 - 多数据库间切换
 - 多数据库间移动数据
 - 清除数据库内数据

为什么有这么多数据库?

因为在生产环境当中,这些数据库是为了不同场景而设立的

例如:

  • 生产环境用到的数据放在1数据库当中
  • 开发环境用到的数据放在2数据库当中
  • 测试环境用到的数据放在3数据库当中

五:Redis数据类型(五种)

Redis支持五种数据类型:
string (字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

5.1: string(字符串)

  • string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
  • string类型是二进制安全的,redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
  • string类型是Redis最基本的数据类型,string类型的值最大能存储512MB.
[root@localhost utils]#  redis-cli -h 20.0.0.30 -p 6379
20.0.0.30:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
20.0.0.30:6379> type name
string
20.0.0.30:6379> keys *
"name"

5.2: Hash (哈希字典)

  • hash是一个键值(key=>value)对集合
  • hash是一个string类型的field 和 value的映射表,hash特别适合用于存储对象
  • hash 可以存储2的32次方 -1键值对。
20.0.0.30:6379> hmset stu name lisi age 18 sex 男
OK
20.0.0.30:6379> hget stu name
"lisi"
20.0.0.30:6379> hget stu age
"18"
20.0.0.30:6379> hget stu sex
"\xe7\x94\xb7"                //这里出现了乱码
20.0.0.30:6379> quit


//--raw   解决中文乱码问题
[root@localhost utils]# redis-cli -h 20.0.0.30 -p 6379 --raw
20.0.0.30:6379> hget stu set

5.3:list (列表)

  • Redis 列表是简单的字符串列表,按照插入顺序排序,可以重复。可以添加一个元素到列表的头部(左部)或者尾部(右边)
  • 列表最多可存储2的32次方 -1元素。
20.0.0.30:6379> lpush hobby play
1
20.0.0.30:6379> lpush hobby read
2
20.0.0.30:6379> lpush hobby sport
3
20.0.0.30:6379> lrange hobby 0 10              //把列表中的元素展现前3行
sport
read
play
20.0.0.30:6379> lpush hobby read               //再存一个read,是可以重复的
4
20.0.0.30:6379> lrange hobby 0 10                 //在10行以内都展现出来
read
sport
read
play

5.4: set (集合:无序集合)

  • Redis的Set是string类型的无序集合
  • 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是0(1)
add命令:添加一个string元素到key对应的set集合中,成功返回1,如果元素已经在集合中返回0。

20.0.0.30:6379> sadd color red green yellow
3
20.0.0.30:6379> smembers color
red
green
yellow
20.0.0.30:6379> sadd color red
0

5.5: zset(sorted set:有序集合)

  • Redis zset和set 一样也是string类型元素的集合,并且不允许重复的成员
  • 不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序
zadd命令:添加元素到集合,元素在集合中存在则

20.0.0.30:6379> keys *                   //查看key的数量
hobby
hobby
stu
color
name
20.0.0.30:6379> del color                //把元素color删除
1
20.0.0.30:6379> keys *                    
hobby
stu
name
20.0.0.30:6379> zadd color 0 red             
1
20.0.0.30:6379> zadd color 0 blue
1
20.0.0.30:6379> zadd color 1 green
1
20.0.0.30:6379> zadd color 2 yellow
1
20.0.0.30:6379> zrangebyscore color 0 10
blue
red
green
yellow
20.0.0.30:6379> zrangebyscore color 0 0
blue
red
20.0.0.30:6379> zrangebyscore color 1 1
green
20.0.0.30:6379> zrangebyscore color 1 2
green
yellow
20.0.0.30:6379> zrangebyscore color 2 2
yellow
20.0.0.30:6379> 

六:多数据库操作

6.1:切换数据库

20.0.0.30:6379> select 1              //切换到2数据库
OK
20.0.0.30:6379[1]> select 2         //切换到3数据库
OK
20.0.0.30:6379[2]> select 1
OK
20.0.0.30:6379[1]> keys *              查看,发现没有数据,因为redis默认支持16个数据库,子数据库之间不共享数据

20.0.0.30:6379[1]> select 0         重新回到1数据库
OK

6.2:数据迁移

20.0.0.30:6379> move stu 1              把1数据库的信息迁移到2数据库
1 
20.0.0.30:6379> keys *                          //查看key,发现1数据库已经没有stu
hobby
color
name
20.0.0.30:6379> select 1                          //切换到2数据库
OK
20.0.0.30:6379[1]> keys *                        //发现stu
"stu" 
20.0.0.30:6379[1]> hget stu name
"lisi"
20.0.0.30:6379[1]> hget stu age
"18"

6.3: 清空所有数据库数据

高危命令:一定要慎用,直接把16个数据库的信息全部删除!

20.0.0.30:6379[1]> FLUSHALL
OK
20.0.0.30:6379[1]> get name
//空空如也
20.0.0.30:6379[1]> select 0
OK
20.0.0.30:6379[1]> get name
//空空如也

6.4:key常规管理

//验证key是否存在 exists
20.0.0.30:6379> set name zhangsan
OK
20.0.0.30:6379> exists name        //执行成功为1,否则为0,说明name是存在的
1
20.0.0.30:6379> exists names
0

//重命名 rename
20.0.0.30:6379> rename name na
OK
20.0.0.30:6379> get na             //get调用它
"zhangsan"

//设置超时时间 PEXPIRE(单位:毫秒)

20.0.0.30:6379> keys *              //查看键值列表,key的数量
 "hobby"
 "color"
"na"

20.0.0.30:6379> PEXPIRE na 3000          //设置时间为3秒,单位为毫秒,1秒等于1000毫秒
20.0.0.30:6379> get na
//空空如也
20.0.0.30:6379> keys *       查看key,na已经消失
1) "hobby"
2) "color"


//查看剩余时间PTTL (单位:毫秒)

20.0.0.30:6379> set name zhangsan
OK
20.0.0.30:6379> PTTL name                 //查看生命周期,-1表示永不超时
 -1
20.0.0.30:6379> PEXPIRE name 50000            //设置时间为50秒
 1
20.0.0.30:6379> PTTL name
40499                                //剩余时间
20.0.0.30:6379> PTTL name
32559
20.0.0.30:6379> 

//取消超时时间

20.0.0.30:6379> PERSIST name
1
20.0.0.30:6379> PTTL name
-1
20.0.0.30:6379> get name
zhangsan


//随机返回key RANDOMKEY

20.0.0.30:6379> mset age 18 score 88 sex boy         
OK
20.0.0.30:6379> RANDOMKEY
"age"                          //返回的是随机的
20.0.0.30:6379> RANDOMKEY
"sex"
20.0.0.30:6379> RANDOMKEY
"age"
20.0.0.30:6379> RANDOMKEY
"sex"

//查看所有key

20.0.0.30:6379> keys *           //查看键值列表,key的数量
hobby
color
na
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值