redis安装部署和常用命令

目录

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

1、概念

2、关系型和非关系型数据库的区别:

3、非关系型数据库的主要场景:

4、数据库缓存:

5、总结

二、redis概述

1、redis的工作特点:

2、redis的特点:

3、redis为什么这么快?

4、缓存的概念:

三、安装部署redis

四、redis的常用命令

1、redis命令工具:

2、Redis 数据库常用命令

五、redis 的五大数据类型:

1、string(字符串):

2、list数据类型

3、HASH类型

4、set数据类型(无序集合):set

5、有序集合:zset


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

1、概念

●关系型数据库:

关系型数据库是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。

SQL 语句(标准数据查询语言)就是一种基于关系型数据库的语言,用于执行对关系型数据库中数据的检索和操作。

主流的关系型数据库包括 Oracle、MySQL、SQL Server、Microsoft Access、DB2、PostgreSQL 等。

以上数据库在使用的时候必须先建库建表设计表结构,然后存储数据的时候按表结构去存,

如果数据与表结构不匹配就会存储失败。

●非关系型数据库

NoSQL(NoSQL = Not Only SQL ),意思是“不仅仅是 SQL”,是非关系型数据库的总称。

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

不需要预先建库建表定义数据存储表结构,每条记录可以有不同的数据类型和字段个数

(比如微信群聊里的文字、图片、视频、音乐等)。

主流的 NoSQL 数据库有 Redis、MongBD、Hbase、Memcached 等。

2、关系型和非关系型数据库的区别:

关系型数据库sql:

关系型数据库是一个结构化的数据库,行和列。列声明对象,行记录对象属性。

表与表之间是有关联的,使用sql语句,来对指定的表、库进行增删改查

在创建表时,我们是设计好了表的结构。按照表结构存储数据。数据如果与表结构不匹配,存储数据会失败

非关系型数据库no sql:not only sql

不需要定义库,也不需要定义表的结构,直接记录即可,而且每条记录都可以有不同的数据类型,字段(字段个数)

redis key:values 键值对形式存储。每个键之间没有直接关联。库与库之间互相独立

区别:

  1. 数据的存储方式不同:
  2. 扩展方式不同,性能上的提升。

关系型数据库靠的是提升本机的性能。

非关系数据库可以横向扩展,加入节点服务器的方式提高性能

  1. 对事物的支持性,MySQL支持事务(原子性、隔离性、一致性、持久性)

非关系型数据库redis也可以支持事务,其稳定性和处理能力都不如关系数据库

3、非关系型数据库的主要场景:

  1. 操作的扩展性
  2. 海量数据处理

web2.0核心:交互

纯动态网站的三高问题:

  1. 对数据库高并发读写的需求
  2. 对海量数据高效存储与访问的需求
  3. 对数据库的高可扩展性与高可用性的需求

4、数据库缓存:

常见的集中缓存需求场景:

数据库缓存

web页面缓存

cpu和硬盘之间的缓存

关系型数据库:

库——>表——>行,列——>存储数据

非关系型数据库:

库——>集合——>键值对(不需要手动创建库和集合)

redis:开源的,使用c语言编写的no sql数据库。

redis工作方式:基于内存运行,支持持久化(数据恢复)。采用的就是key-values(键值对)的存储形式。目前在分布式架构中是非常重要的一环

5、总结

非关系数据库

1、数据保存在缓存中,利于读取速度/查询数据

2、架构中位置灵活

3、分布式、扩展性高

关系数据库

1、安全性高(持久化)

2、事务处理能力强

3、任务控制能力强

4、可以做日志备份、恢复、容灾的能力更强一点。

二、redis概述

1、redis的工作特点:

redis服务器程序是一个单进程模式,即只有一个主进程工作。也就是说在一台服务器上可以启动多个redis(端口号不能冲突)

redis的实际处理速度是完全依靠主进程的处执行效率

服务器只部署了一个redis进程,多个客户端访问,可能会导致redis的处理能力下降

如果部署了多个redis进程,虽然能提高redis的并发处理能力,但是会给服务器的CPU带来很大的压力

一台服务器一般部署3个redis进程(根据情况来看,高并发要部署多个。一般情况,单进程足够了)

2、redis的特点:

  1. 具有极高的读写速度,读数据每秒110000次,写入数据每秒可以执行81000的写入
  2. 支持丰富的数据类型
  3. 支持持久化。平常的数据都是保存到内存中,持久化可以写入到磁盘中,既可以保存到本地,也可以实现备份
  4. 原子性,redis所有的操作都是原子性
  5. 支持数据主从模式——master-slave模式

3、redis为什么这么快?

  1. redis是纯内存结构,避免磁盘I/O的耗时
  2. 核心模块是一个单进程,减少了线程切换和回收线程的时间(不回收变僵尸进程)
  3. I/O的多路复用机制。每一个执行线路都可以同时执行读和写。高并发效率大大提高

特殊说明:redis的读写。任然是单进程处理

4、缓存的概念:

缓存是一种用于存储临时数据副本的技术,目的是提高数据访问速度和性能。

缓存通常位于数据的访问路径上,可以在不直接访问原始数据源的情况下提供对数据的快速访问。

缓存数据: 缓存存储的是原始数据的副本。这可以是计算结果、数据库查询结果、文件内容等。

缓存命中: 当请求的数据在缓存中找到时,发生了缓存命中。这避免了对原始数据源的访问,提高了访问速度。

缓存未命中: 当请求的数据在缓存中未找到时,发生了缓存未命中。

系统将不得不从原始数据源中检索数据,然后将其存储在缓存中以供将来使用。

缓存淘汰: 当缓存空间不足时,系统需要决定哪些数据应该被淘汰以腾出空间。

这通常是基于一些策略,例如最近最少使用(LRU)或先进先出(FIFO)。

缓存策略: 缓存系统使用不同的策略来确定哪些数据应该被缓存、保留多长时间以及何时淘汰。

这包括淘汰策略(LRU、LFU)、缓存过期策略等。

缓存层次结构: 复杂系统中可能存在多个层次的缓存,从本地内存到分布式缓存,甚至是内容分发网络(CDN)。

缓存透明性: 缓存应该对应用程序透明,应用程序无需了解缓存的存在,缓存应该自动处理。

分布式缓存: 在分布式系统中,缓存通常以分布式方式部署,以支持大规模的应用程序。

缓存的使用可以显著提高系统性能,减轻原始数据源的负载,并降低数据访问延迟。

常见的缓存应用包括 Web 页面缓存、数据库查询缓存、对象缓存等。

三、安装部署redis

关闭防火墙和安全机制

安装环境:

yum install -y gcc gcc-c++ make

解压

tar -xf redis-5.0.7.tar.gz

进入目录,编译

cd redis-5.0.7/

make -j4

指定路径安装:

make PREFIX=/usr/local/redis install

进入cd utils/目录

cd utils/

./install_server.sh

Selected config:

Port           : 6379 #默认侦听端口为6379

Config file    : /etc/redis/6379.conf #配置文件路径

Log file       : /var/log/redis_6379.log #日志文件路径

Data dir       : /var/lib/redis/6379 #数据文件路径

Executable     : /usr/local/redis/bin/redis-server #可执行文件路径

Cli Executable : /usr/local/bin/redis-cli #客户端命令工具

软连接命令识别:

ln -s /usr/local/redis/bin/* /usr/local/bin/

当 install_server.sh 脚本运行完毕,Redis 服务就已经启动,默认监听端口为 6379

netstat -natp | grep redis

安装成功

Redis 服务控制

/etc/init.d/redis_6379 stop #停止

/etc/init.d/redis_6379 start #启动

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

/etc/init.d/redis_6379 status #状态

修改配置 /etc/redis/6379.conf 参数

vim /etc/redis/6379.conf

bind 127.0.0.1 20.0.0.41 #70行,添加 监听的主机地址

port 6379 #93行,Redis默认的监听端口

daemonize yes #137行,启用守护进程(后台运行)

pidfile /var/run/redis_6379.pid #159行,指定 PID 文件

loglevel notice #167行,日志级别

logfile /var/log/redis_6379.log #172行,指定日志文件

/etc/init.d/redis_6379 restart

以上完成,redis安装完成

四、redis的常用命令

1、redis命令工具:

redis-server 可以直接启动redis(只能用于启动用)

redis-benchmark 检测redis在本机的运行效率

redis-cli 命令行工具

redis-check-aof 检测AOF文件是否正常

redis-check-rdb 检测rdb文件是否正常

redis-benchmark

-h指定服务器的主机名 IP地址

-p 指定服务器端口号

-c 指定并发连接数

-n 指定请求数

连接请求测试

redis-benchmark -h 20.0.0.26 -p 6379 -c 100 -n 100000

如何进入redis

redis-cli -h 20.0.0.26 -p 6379

-h 指定IP地址

-p 指定端口号

-a 指定登录密码

redis-cli 本机直接进,仅限于本地,远程还是需要指定目标服务器的IP地址和端口

2、Redis 数据库常用命令

基础数据类型包括:string(字符串)、list(列表,双向链表)、

hash(散列,键值对集合)、set(集合,不重复)和sorted set也可以称为Zset(有序集合)。

新建:

set 键名 键值

查询:

get 键名

set:存放数据,命令格式为 set key value

get:获取数据,命令格式为 get key

keys * 查看全部键值对

查询键值对:

判断键值对是否存在:exists

删除键:del

del 键名1 键名2

查看键的类型:type

如何对已有key进行重命名:rename

rename 原键名 新键名

如何查看当前库 键的数目

dbsize

redis的库都是创建好的库,默认16个库,按照数字进行排名

数字排名:0-15

每个数据库之间互相独立,互不干扰

切换库:select

select 1~15(默认有16个库从0开始命名)

将当前库的键值对移动到其他库去:move

move 键名 库名

给库创建密码:

config set requirepass 123456

清空:永不操作的操作

五、redis 的五大数据类型:

redis数据类型 五大数据类型:

1、string(字符串):

也是redis最基本的类型,最大能存储512MB的数据,可以存储任何数据,数字,文字,图片等等

SET/GET/APPEND/STRLEN:

PS:APPEND

APPEND key value追加键值,并返回追加后的长度(若键不存在,则相当于创建)

返回键的长度

set 键入值是覆盖

数字自增:

INCR/DECR/INCRBY/DECRBY:

INCR key:key值递增加1(key值必须为整数)

DECR key:key值递减1(key值必须为整数)

INCR 表名

DECR 表名

指定加减:

如何给键值设置过期时间

SETEX:

setex key seconds value:设置指定key的过期时间为seconds

-1表示键值对永不过期

-2表示键值对过期

SETEX test2 15 lo

对已有键值添加生命周期

EXPIRE test 30

MSET/MGET/MSETNX批量操作

MSET key value [key value …]:批量设置键-值对

MGET key [key …]:批量获取键值对

MSETNX key value [key value …]:批量设置键-值对,都不存在就执行并返回1;只要有一个存在就不执行并返回0

2、list数据类型

概述:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素

创建列表

lpush从右到左插入元素

rpush从左到右插入元素

插入数据:

lpushx/rpushx

删除数据:

lpop/rpop

删头/删尾

llen 获取表中元素数量

索引下标:

lindex 表名 索引下标:查询索引下标对应的值(索引下标从0开始)

在索引下标后添加元素:lset

lset key 3 ok:在第三位(第四个元素)后面添加ok

在索引下标位置前插入元素:

linsert 表名 before 索引下标 元素

3、HASH类型

HASH类型用于存储对象,采用HASH格式进行操作。占用的磁盘空间少,而且一个HASH可以存储4294967295个键值对

创建hset

hset 键名 字段 值

打印hget

hget 键名 字段

创建多个字段:

hmset 键名 字段1 值1 字段2 值2

打印指定字段:

hmget 键名 字段1 字段2

打印全部字段和值:

HGETALL 键名

打印指定多个字段:

hmget 键名 字段1 字段2

创建多个字段:

hmset 键名 字段1 值1 字段2 值2

打印全部字段和值:

HGETALL 键名

hkeys命令仅获取myhash键中所有字段的名字

删除键:del 键名

删除键中的字段:

hdel 键名 字段1 字段2

删除:del

4、set数据类型(无序集合):set

元素类型也是string。元素值是唯一的,不允许重复,多个集合类型可以进行并集、交集、差集运算

set当中的元素类型是唯一的,可以跟踪一些唯一性的数据,如访问微博的用户名,只要把对应的名称写入redis,set会自动保存他的唯一性,方便下一次访问

创建:

sadd 键名 元素

判断元素是否已经存在

sismember 表名 元素

随机的返回了某一元素

SRANDMEMBER 键名

随机移除一个元素

spop 键名

指定移除:

srem 键名 元素1 元素2 元素3

5、有序集合:zset

元素类型也是string,元素也不能重复唯一

每个元素都要关联一个double类型(浮点数)的分数(score,表示权重),可以通过权重的大小进行排序。元素不能相同但是元素的score权重的可以相同

用于在线积分的排行榜,实时更新用户的分数和排名。zrange命令获取积分top10的用户。zrank命令通过username获取用户的排行信息

创建:

zadd myzset 1 one

权重是1,元素是one

查看索引位置:

zrank 键名 元素

如何查询成员数量:

zcard 键名

zcount 键名 1 2 查看权重1-2的成员数量

删除:

zrem 键名 元素

查看有序集合的权重和元素

只查看元素:ZRANGE 键名 0 -1

查看权重和元素:ZRANGE 键名 0 -1 withscores

0表示第一个 -1表示最后一个

查看元素对应的权重

zscore 键名 元素

set和hset 创建普通类型和HASH类型:

一般情况下,如无特殊需求,普通的创建方式即可

对一个键进行对字段存储,节省内存,使用HASH方式

工作中set足够

五大数据类型:

  1. string
  2. list
  3. hash对一个键进行多字段操作,节省内存空间
  4. 无序集合set元素不能重复,可以用来定义唯一值
  5. 有序结合zset元素不能重复,但是权重可以相同,用来排名

猜你喜欢

转载自blog.csdn.net/koeda1/article/details/134512180
今日推荐