首页 > 数据库 >redis基础及基础命令

redis基础及基础命令

时间:2023-03-29 16:56:02浏览次数:52  
标签:存储 redis 数据库 基础 命令 key Redis 数据

Redis基础及基础命令

  1.Redis简介

    Redis 是完全开源免费的,遵守 BSD 协议,是一个灵活的高性能 key-value 数据结构存储,可以用来作为数据库、缓存和消息队列。

    Redis 比其他 key-value 缓存产品有以下三个特点:

      Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载到内存使用。

      Redis 不仅支持简单的 key-value 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。

      Redis 支持主从复制,即 master-slave 模式的数据备份。

  2.Redis基础

    2.1关系型数据库和非关系型数据库

    关系型数据库:

    关系型数据库是指采用了关系模型来组织数据的数据库。简单来说,关系模式就是二维表格模型。主要代表:SQL Server,Oracle,Mysql,PostgreSQL。

    容易理解,二维表的结构非常贴近现实世界,二维表格,容易理解;使用方便,通用的sql语句使得操作关系型数据库非常方便;易于维护,数据库的ACID属性,大大降低了数据冗余和数据不一致的概率。

    对于网站的并发量高,往往达到每秒上万次的请求,对于传统关系型数据库来说,硬盘I/o是一个很大的挑战。在基于web的结构中,数据库是最难以横向拓展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库没有办法像web Server那样简单的通过添加更多的硬件和服务节点来拓展性能和负载能力。

    非关系型数据库:

    NoSQL非关系型数据库,主要指那些非关系型的、分布式的,且一般不保证ACID的数据存储系统,主要代表MongoDB,Redis、CouchDB。

    NoSQL提出了另一种理念,以键值来存储,且结构不稳定,每一个元组都可以有不一样的字段,这种就不会局限于固定的结构,可以减少一些时间和空间的开销。使用这种方式,为了获

用户的不同信息,不需要像关系型数据库中,需要进行多表查询。仅仅需要根据key来取出对应的value值即可。

    非关系数据库大部分是开源的,实现比较简单,大都是针对一些特性的应用需求出现的。根据结构化方法和应用场景的不同,分为以下几类。

    (1)面向高性能并发读写的key-value数据库

     主要特点是具有极高的并发读写性能,例如Redis、Tokyo Cabint等。

    (2)面向海量数据访问的面向文档数据库

     特点是,可以在海量的数据库快速的查询数据。例如MongoDB以及CouchDB.

    (3)面向可拓展的分布式数据库

     解决的主要问题是传统数据库的扩展性上的缺陷。

    但是由于Nosql约束少,所以也不能够像sql那样提供where字段属性的查询。因此适合存储较为简单的数据。有一些不能够持久化数据,所以需要和关系型数据库结合。

    2.2关系型数据库和非关系型数据库的区别

    (1)数据存储方式不同

     关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。与其相反,非

关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因·

素。

    (2)扩展方式不同 

     SQL和NoSQL数据库最大的差别可能是在扩展方式上,要支持日益增长的需求当然要扩展。要支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算

机,这样处理相同的数据集就更快了。因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向

扩展的上限。而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。

    (3)对事务性的支持不同

     如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回

滚事务。虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。

    2.3Redis特点

    高性能: Redis 将所有数据集存储在内存中,可以在入门级 Linux 机器中每秒写(SET)11 万次,读(GET)8.1 万次。Redis 支持 Pipelining 命令,可一次发送多条命令来提高吞吐率,减

少通信延迟。

    持久化:当所有数据都存在于内存中时,可以根据自上次保存以来经过的时间和/或更新次数,使用灵活的策略将更改异步保存在磁盘上。Redis 支持仅附加文件(AOF)持久化模式。

    数据结构: Redis 支持各种类型的数据结构,例如字符串、散列、集合、列表、带有范围查询的有序集、位图、超级日志和带有半径查询的地理空间索引。

    原子操作:处理不同数据类型的 Redis 操作是原子操作,因此可以安全地 SET 或 INCR 键,添加和删除集合中的元素等。

    支持的语言: Redis 支持许多语言,如 C、C++、Erlang、Go、Haskell、Java、JavaScript(Node.js)、Lua、Objective-C、Perl、PHP、Python、R、Ruby、Rust、Scala、Smalltalk

等。

    主/从复制: Redis 遵循非常简单快速的主/从复制。配置文件中只需要一行来设置它,而 Slave 在 Amazon EC2 实例上完成 10 MM key 集的初始同步只需要 21 秒。

    分片: Redis 支持分片。与其他键值存储一样,跨多个 Redis 实例分发数据集非常容易。

    可移植: Redis 是用 C 编写的,适用于大多数 POSIX 系统,如 Linux、BSD、Mac OS X、Solaris 等。

  3.安装部署

systemctl stop firewalld
#关闭防火墙
setenforce 0
#关闭SElinux

yum install gcc gcc-c++ make -y
#安装依赖包及工具

cd /opt
#切换到opt目录下
tar xf redis-5.0.7.tar.gz
#解压redis安装包
cd redis-5.0.7/
make && make prefix=/usr/local/redis install
#直接执行make与make install命令进行安装

cd utils/
#切换到utils目录下
./install_server.sh
#执行目录下install_server.sh脚本
Welcome to the redis service installer
This script will help you easily set up a running redis server
............
#然后一路回车
Please select the redis executable path [/usr/local/bin/redis-server] /usr/local/redis/bin/redis-server
#需要手动修改为 /usr/local/redis/bin/redis-server

ln -s /usr/local/redis/bin/* /usr/local/bin/
#创建软连接到/usr/local/bin下,便于系统识别。
ss -natp |grep redis
#查看下进程是否开启

vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.74.74
#第70行添加IP地址
port 6379	
#第93行默认端口号
daemonize yes
#第137行启用守护进程
pidfile /var/run/redis_6379.pid	
#第159行指定pid文件
loglevel notice	
#第167行日志级别
logfile /var/log/redis_6379.log	
#第172行日志文件位置

  4.Redis命令行工具

redis-server		用于启动 Redis 的工具
redis-benchmark		用于检测 Redis 在本机的运行效率
redis-check-aof		修复 AOF 持久化文件
redis-check-rdb		修复 RDB 持久化文件
redis-cli	 		Redis命令行工具

     4.1redis-cli 命令行工具

语法:redis-cli -h host -p port -a password

-h	指定远程主机
-p	指定 Redis 服务的端口号
-a	指定密码,未设置数据库密码可以省略-a 选项
若不添加任何选项表示,则使用 127.0.0.1:6379 连接本机上的 Redis 数据库

     4.2redis-benchmark 测试工具

redis-benchmark 是官方自带的 Redis 性能测试工具, 可以有效的测试 Redis 服务的性
能。 基本的测试语法为
redis-benchmark [选项] [选项值]
-h: 指定服务器主机名。
-p: 指定服务器端口。
-s: 指定服务器 socket。
-c: 指定并发连接数。
-n: 指定请求数。
-d: 以字节的形式指定 SET/GET 值的数据大小。
-k: 1=keep alive 0=reconnect 。
-r: SET/GET/INCR 使用随机 key, SADD 使用随机值。
-P: 通过管道传输<numreq>请求。
-q: 强制退出 redis。 仅显示 query/sec 值。
--csv: 以 CSV 格式输出。
-l: 生成循环, 永久执行测试。
-t: 仅运行以逗号分隔的测试命令列表。
-I: Idle 模式。 仅打开 N 个 idle 连接并等待。
redis-benchmark -h 192.168.224.101 -p 6379 -c 100 -n 100000
#向 IP 地址为 192.168.224.101端口为 6379 的 Redis 服务器发送 100 个并发连接与 100000 个请求测试性能

 

redis-benchmark -h 192.168.224.101 -p 6379 -q -d 100
#测试存取大小为 100 字节的数据包的性能

  5.Redis常用命令

    5.1set/get 存放/获取数据

set		存放数据,命令格式为 set key value
get		获取数据,命令格式为 get key

    5.2keys 取值

keys 	命令可以取符合规则的键值列表,通常情况可以结合*、?等选项来使用。
keys *
#看所有
keys v*
#看所有以v开头的
keys v?
#看以v开头的且后面只有一个字节
keys v??
#看以v开头的且后面只有两个字节

    5.3del 删除key

del 	命令可以删除当前数据库的指定 key。

del k1
#删除k1

    5.4exists 判断值是否存在

exists 	命令可以判断键值是否存在

exists v1
#查看v1是否存在
(integer) 1
#存在
exists k1
#查看k1是否存在
(integer) 0
#不存在

    5.5type 获取值的类型

type 	命令可以获取 key 对应的 value 值类型

type v1 
#查看v1类型

    5.6rename 重命名(覆盖)

rename 命令是对已有 key 进行重命名。(覆盖)
命令格式:rename 源key 目标key

    5.7renamenx 重命名(不覆盖)

renamenx 命令的作用是对已有 key 进行重命名,并检测新名是否存在,如果目标 key 存在则不进行重命名。(不覆盖)
命令格式:renamenx 源key 目标key

    5.8dbsize 查看库中key的数量

dbsize 命令的作用是查看当前数据库中 key 的数目。

    5.9设置密码

使用config set requirepass password命令设置密码
使用config get requirepass命令查看密码(一旦设置密码,必须先验证通过密码,否则所有操作不可用)

config set requirepass 123456
#修改密码为123456
auth 123456
#验证密码

    5.10move移动数据

Redis 的多数据库在一定程度上是相对独立的, 例如在数据库 0 上面存放的 k1 的数据,
在其它的 1-15 的数据库上是无法查看到的。

move  键名  数据库编号

move v1 1
#将v1移到1库
select 1
#切换到1库
keys *

  6.总结

    redis是非关系型数据库,redis在内存上运行并支持持久化,客户访问数据不需要读取硬盘,所以速度非常快,利用键值对的存储形式,redis服务器程序是单进程模式。
在读写分离的MySQL数据库中,把经常访问的数据存储在redis非关系型数据库中,提升访问速度。

标签:存储,redis,数据库,基础,命令,key,Redis,数据
From: https://www.cnblogs.com/xuyuankai/p/17269528.html

相关文章

  • linux延迟执行命令-at
    at:一次性定时任务计划执行命令格式点击查看代码at18:00at>echo"hello"#执行的命令at><EOT>#用ctrl+D提交job2atWedMar2918:00:002023at-l#查......
  • 后端手册--18--redis缓存
    Redis缓存yudao-spring-boot-starter-redis (opensnewwindow)技术组件,使用Redis实现缓存的功能,它有2种使用方式:编程式缓存:基于SpringDataRedis框架的Redi......
  • Linux 使用 Split 命令分割文件与合并
    LinuxSplit命令用于将大文件分割成较小的文件(默认每1000行切割成一个小文件),比如在网络质量不佳的情况下需要传输一些较大的视音频文件、程序文件等内容,分割后可以方便我......
  • Linux操作命令常见问题(N+)
    1.什么是Linux?它的特点是什么?答:Linux是一种开源的操作系统,其特点包括稳定性、安全性、灵活性、可扩展性、自由度高等。2.如何在Linux系统上安装软件?答:通常可以使用包......
  • 基础命令
    SSH1.基于口令的验证—————用账户和密码来验证登录;2.基于密钥的验证—————需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并与服务器中的公钥进行比较;该......
  • Tomcat基础学习
    Tomcat简介Tomcat是一个轻量级的web服务器,也称为web容器,servlet容器。(web服务器可以封装http协议,简化开发。还可以将web项目部署到服务器上,对外提供网上浏览。)Tomcat基本......
  • mount命令
    一.网址参考1. Linux文件系统之mount二.实践1.把设备ubi2_0按照ubifs格式挂载到opt分区mount-tubifsubi2_0/optmount-tubifs-oroubi2_0/opt#按照只......
  • 简单的Dos命令
    打开CMD的方式开始+Windows系统+命令提示符Win键+R输入cmd在任意文件夹下,按住shift+鼠标右击,在此处打开PowerShell窗口资源管理器的地址栏前面加上cmd路径......
  • 【转载】WSL 的基本命令
    参考:https://learn.microsoft.com/zh-cn/windows/wsl/basic-commandshttps://blog.csdn.net/u010099177/article/details/125704313  ============================......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-产品描述变广告文案应用从0到1快速入门——官
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载......