当前位置: 首页 > news >正文

Redis相关介绍

bde84b1d8aaa459a89cec028d31c1bc5.jpg

 

概念

Redis:非关系型数据库(non-relational),Mysql是关系型数据库(RDBMS)

 

Redis是当今非常流行的基于KV结构的作为Cache使用的NoSQL数据库

 

为什么使用NoSQL

关系型 数据库无法应对每秒上万次 的读写请求

表中的存储记录 数量有限

无法简单的通过增加硬件、服务节点来提高系统性能

关系型数据库大多是收费的,对硬件要求较高,软硬 件成本较高

NoSQL优势

大数据量,高性能

灵活的数据模型,无需事先为数据建立字段,随时可以存储自定义的数据格式

高可用,在不影响性能的情况下,可以方便的实现高可用的框架,能很好的解决关系型数据库扩展性差的问题

低成本

NoSQL劣势

无关系,数据之间是无联系的

不支持标准的SQL,没有公认的NoSQL标准

没有关系型数据库的约束,大多数也没有索引的概念

没有事务,不能依靠事务实现ACID

没有丰富的数据类型(数值,日期,字符,二进制,大文本等)

Redis安装和使用

官网:Redis官网

 

中文版:Redis中文版网址

 

下载

window版本

网址:window版本网址

 

使用步骤

下载Redis-x64-3.2.100.zip

 

解压,双击:redis-server.exe,如果启动失败需要手动配置:redis.windows.conf

 

在当前目录下,选择目录显示框,输入:cmd,进入命令行

 

输入redis-server.exe redis.windows.conf 回车

 

出现上图的图形,则证明该服务已启动

 

双击:redis-cli.exe,打开Redis自带客户端,通过该客户端可以执行和Redis的数据交互

 

输入:set,自动弹出语法格式

 

将光标通过空格键移到key上,输入key的值,光标通过空格键移到value上,输入value的值,回车。

 

出现该结果代表值保存成功

 

通过:get 方法取值

 

Linux版本

网址:Redis官网

 

安装步骤

通过Xftp工具,将下载在window上的压缩包上传到Linux上目录:/home/soft

 

解压到Linux上目录:usr/local目录:

 

解压命令:tar -zxvf 压缩包名 -C usr/local/

 

编译Redis文件,Redis是使用C语言编写的。会使用gcc编译器

 

在解压后的Redis安装目录执行make命令,

 

注意事项:

 

make命令执行过程中可能报错,根据控制台输出的错误信息解决

 

错误一:gcc命令找不到,是由于没有安装gcc导致

 

解决方式:安装gcc编译器后执行make命令

 

安装gcc编译器:在src目录下使用yum命令:yum -y install gcc

 

错误二:error:jemalloc/jemalloc.h:No such file or directory

 

解决方式执行:make MALLOC=libc

 

make命令之后,执行:make install,该命令类似于windows系统中配置环境变量,这样我们就可以在任何地方执行Redis的命令

Linux中的使用

开启Redis

Linux中的redis-server是服务窗口,redis-cli是客户端窗口

 

在src目录下执行:

 

打开服务器

 

前台启动:./redis-server

 

后台启动:./redis-server &(常用后台启动方式,如果修改了配置文件,则每次启动都需要指向配置文件)

 

打开客户端,执行:./redis-cli 开启命令行

 

关闭Redis

在客户端中执行:shutdown

在src目录下执行:./redis-cli shutdown(如果有密码:./redis-cli -a 密码 shutdown)

Redis客户端

redis命令行客户端

直接连接redis(默认ip:127.0.0.1,端口:6379):./redis-cli

指定IP和端口号连接redis:./redis-cli -h 127.0.0.1 -p 6379

-h redis主机IP(可以指定任意redis服务器)

-p 端口号(不同的端口号表示不同的redis应用)

远程客户端连接Linux上redis

网址:远程客户端网址

 

国产:客户端

 

Redis服务器有安全保护措施,默认只有本机可以访问,配置信息在Redis安装目录下的redis.conf文件。修改此文件的两个设置。

 

远程连接redis需要修改redis主目录下的redis.conf配置文件:

 

bind ip 绑定ip,此行注释

protected-mode yes 保护模式改为no

使用vi/vim命令修改redis.conf文件,修改文件前备份此文件,执行cp命令

 

步骤

在/usr/local/redis/目录下执行: cp redis.conf bak_redis.conf

 

使用vim/vi命令,执行:vim redis.conf 再执行:GG 将光标移至最后一行,再执行:/bind 按回车查找,执行:n 往下查找,找到 bind 127.0.0.1后将其注释掉,

 

找到protected -mode yes,将yes改成no

 

执行:esc按键,输入“:qw”,完成保存退出

 

修改结束后,每次启动redis时,需要指定redis.conf

 

进入src目录下执行:./redis-server ../redis.conf &

 

查看 防火墙的状态,执行:systemctl status firewalld

 

关闭防火墙命令:service firewalld stop

 

编程 客户端连接Linux的redis

Redis基本操作命令

1、沟通命令

命令行输入:ping,返回PONG,表示服务端运行正常

 

2、查看当前数据库中key的数目:dbsize

作用:返回当前数据库的 key 的数量,默认访问第0个库

 

3、Redis默认使用16个 库

可以在conf配置文件中修改:databases的值

 

4、切换库命令:select

执行:select index

 

5、删除当前库的数据:flushdb

删除当前库中的所有数据

 

6、redis自带的客户端退出当前redis连接:exit或quit

客户端退出连接,服务端继续运行

 

Redis的key的操作命令

keys:查询自己需要的key

语法:keys pattern

 

作用:查找所有符合模式pattern的key,pattern可以使用通配符

 

通配符:

 

*:表示0至多个字符,例如:keys * 查询所有的key

?:表示单个字符,例如:wo?d,配置word,wold

注意:Redis是单线程接收命令

 

exists:查询key是否存在

语法:exists key [key...]

 

作用:判断key 是否存在

 

expire:设置key的存活时间

语法:expire key seconds

 

作用:设置key的生存时间,超过时间,key自动删除。单位是秒

 

返回值:设置成功返回数字1,其他情况是0

 

ttl:查询key的剩余存活时间

语法:ttl key

 

作用:以秒为单位,返回 key的 剩余生存时间(ttl:time to live)

 

返回值:

 

-1:没有设置key的生存时间,key永不过期

-2:key不存在

数字:key的生存时间,秒为单位

type

语法:type key

 

作用:查看key所存储值的数据类型

 

返回值:字符串表示的数据类型

 

none(key 不存在)

string(字符串)

list(列表)

set(集合)

zset(有序集)

hash(哈希表)

del

语法:del key[key...]

 

作用:删除存在的key,不存在的key忽略

 

返回值:数字,删除的key的数量

 

五中数据类型

字符串string

字符串类型是Redis中最基本的数据类型,他能存储任何形式的字符串,包括二进制,序列化后的数据,JSON化的对象甚至是一张图片,最大512M

 

基本命令

set key

相关文章:

  • 【PyTorch】改变张量(Tensor)形状操作
  • 2. Maven 继承与聚合
  • 小游戏和GUI编程(4) | 基于 SFML 的黑客帝国字符雨
  • 机器学习3----决策树
  • Android java基础_多态性
  • [ubuntu]split命令分割文件
  • Swift 初见
  • MQTT的学习与应用
  • rtt设备io框架面向对象学习-dac设备
  • Unity下使用Sqlite
  • 开发自定义标记应用程序
  • 2024年远控软件年度盘点:安全、稳定、功能之选
  • 柚见(伙伴匹配系统)第三期
  • 动态水印怎么加 怎么去除动态水印 视频剪辑软件 会声会影安激活序列号 会声会影怎么剪辑视频
  • 2024beginCTF-Crypto 复现
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • [译]Python中的类属性与实例属性的区别
  • Android组件 - 收藏集 - 掘金
  • Consul Config 使用Git做版本控制的实现
  • Docker入门(二) - Dockerfile
  • Lucene解析 - 基本概念
  • nodejs:开发并发布一个nodejs包
  • ViewService——一种保证客户端与服务端同步的方法
  • windows下如何用phpstorm同步测试服务器
  • 大快搜索数据爬虫技术实例安装教学篇
  • 区块链技术特点之去中心化特性
  • 线性表及其算法(java实现)
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #pragma预处理命令
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (k8s中)docker netty OOM问题记录
  • (八)Flask之app.route装饰器函数的参数
  • (翻译)terry crowley: 写给程序员
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (接口封装)
  • (六)软件测试分工
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十一)c52学习之旅-动态数码管
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)人的集合论——移山之道
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net 获取url的方法
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net操作Excel出错解决
  • .NET程序员迈向卓越的必由之路
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • .net开发引用程序集提示没有强名称的解决办法
  • .Net面试题4
  • @DataRedisTest测试redis从未如此丝滑