redis之数据类型

(一)关系型数据库和非关系型数据库的区别

1、关系型数据库是一个机构化的数据库,列和行

(1)列:声明对象
(2)行:记录对象的属性
(3)表与表之间是有关联的,使用sql语句来对指定表、库进行增删改查
(4)在创建表时,是设计好了表的结构,按照表结构来存储数据,数据与表结构不匹配,存储数据会失败
(5)关系型数据库:库——表——行、列——存储数据

2、非关系型数据库:nosql(not only sql)

(1)不需要定义库,也不需要定义表结构,直接记录即可,而且每条记录都可以有不同的数据类型,字段(字段个数)
(2)redis(key:value)键值对形式存储,每个键之间没有直接关联,库与库之间相互关联
(3)非关系型数据库:库——集合——键值对(不需要手动的创建库和集合)

3、区别

(1)数据的存储方式不同
(2)扩展方式,性能上的提升。关系型数据库靠的是提升本机性能;非关系型数据库可以横向扩展,加入节点服务器的方式提高性能
(3)对事务的支持性,mysql支持事务(原子性、隔离性、一致性、持久性);非关系型数据库也支持事务,redis也支持事务,但是稳定性和处理能力都不如关系型数据库

(二)redis

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

(1)操作的扩展
(2)海量数据的处理

2、redis的主要目的——解决三高问题

(1)web2.0:交互
(2)纯动态网站的三高问题
①对数据库高并发读写的需求
②对海量数据高效存储与访问的需求
③对数据库的高扩展性与高可用性的需求

3、数据库缓存(常见的缓存需求场景)

①数据库缓存
②web页面缓存
③CPU和硬盘之间缓存

4、redis的相关概念

(1)redis开源的,使用c语言编写的NQL数据库
(2)redis:基于内促运行,支持持久化(数据恢复),采用的就是key-value(键值对)的存储方式,目前在分布式架构中,是非常重要的一环

5、常见架构

6、redis的工作特点

(1)redis服务器程序是一个单进程模式,即只有一个主进程工作,也就是说在一台服务器上可以启动多个redis(端口不能冲突)
(2)redis的实际处理速度是完全依靠主进程的执行效率
(3)问题:服务器只部署了一个redis进程,多个客户端访问可能会导致redis的处理能力下降;如果部署了多个redis进程,虽然能提高redis的并发处理能力,但是会给服务器的CPU带来很大的压力
(4)工作中:一台服务器一般部署3台redis进程(根据情况来看,高并发要部署多个,一般情况,单进程足够)

7、redis的特点

(1)具有极高的读写速度,数据读取每秒:110000次,写入数据每秒可以执行81000次
(2)支持丰富的数据类型
(3)支持持久化,平常的数据都是保存在内存中,持久化可以写入到磁盘中,既可以保存到本地(磁盘),也可以实现备份
(4)原子性,所有的操作都是原子性
(5)支持主从模式:master—slave模式
8、面试题:redis为什么这么快?
(1)redis是纯内存结构,避免磁盘I/O的耗时
(2)核心模块是一个单进程,减少了线程切换和回收线程的时间
(3)I/O的多路复用机制,每个执行线路都可以同时执行读和写,高并发的效率大大提高
*特殊说明:redis的读写任然是单进程处理

(三)部署redis

1、安装依赖环境:yum install -y gcc gcc-c++ make

2、编译

3、安装:make PREFIX=/usr/local/redis install

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

4、redis的服务控制命令:/etc/init.d/redis_6379 stop 、start、restart、status

5、修改配置文件

(四)redis的命令工具

redis-server

直接启动redis,只能启动

redis-benchmark

检测redis在本机的运行效率

-h

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

-p

指定服务器的端口号

-c

指定并发连接数

-n

指定请求数

redis-cil

命令行工具

-h

指定ip地址

-p

指定端口号

-a

指定登录密码

redis-check-aof

检测AOF文件是否正常

redis-check-rdb

检测rdb文件是否正常

(五)redis的数据类型

1、如何进入redis:redis-cli -h 20.0.0.41 -p 6379

(1)直接进入:redis-cli仅限于本地登录,远程登录还是需要指定目标服务器的ip地址

2、redis的五大数据类型

(1)string(字符串类型—数字、字符串):redis最基本的类型,最大能存储512MB的数据,可以存储任何数据,数字、文字、图片等等
(2)list:列表,列表中的元素还是string类型
(3)hash:用于存储对象,采用hash格式进行操作,占用的磁盘空间很少,一个hash可以存储42亿个键值对
(4)set(无序集合):元素类型也是string,元素是唯一的,不允许重复,多个集合类型之间可以进行并集、交集和差集运算
①应用场景:set当中的元素类型是唯一的,可以跟踪一些唯一性的数据,例如访问微博的用户名,只要把对应名称redis,set集合可以自动保存
(5)zset(有序集合):元素类型string,元素不能重复,唯一,每个元素都会关联一个double类型(小数点)的分数(score,表示权重),按照通过权重的大小进行排序,元素的权重可以相同
①zset应用场景:在线积分的排行榜,可以实时更新用户的分数
②zrange命令获取积分,zrank命令通过username获取用户的排行信息等等,按照权重有序排列

redis的五大数据类型

1、string(字符串类型):redis最基本的类型,最大能存储512MB的数据,可以存储任何数据,数字、文字、图片等等

查看键值对类型

keys *

模糊查询:

keys t*(查看任意以t开头的键值)

keys t??(查看任意以开头后面包含任意两个字符的键值)

创建键值对

set test 10

set test 10(set:创建、直接覆盖)

设置键值的生命周期(新建键值)

setex test2 15 yyy

setex test2 15 yyy

查看键值对的生命周期:ttl test

修改已有键值的生命周期:expire test2 30

查看键值是否存在

exists test

exists test

删除键值对

(del test)

del test

查看对应键的类型

(type test)

type test

append

(返回当前键的总长度)

#该键并不存在,因此append命令返回当前Value的长度

#该键已经存在,因此返回追加后Value的长度

获取指定键的字符长度

strlen test

strlen test

增减:incr、decr、incrby、decrby(key值必须为整数)

incr、decr

自增和自减1

incr test / decr test

incrby和decrby

指定整数增减

incrby test 5

decrby test 5

批量创建多个键值对

(mset)

mset test2 10 test3 10

同时打印多个键的值

(mget)

mget test2 test3

2、list数据类型(列表,列表中的元素还是string类型)

创建列表

lpush test1 a b

创建列表:lpush test1 a b c d

根据索引下标查看列表中的元素

lindex test1 2

lindex test1 2指定某一个索引下标位置

lrange info 1 2指定范围查看

正序创建列表

rpush info 1 2 3 4

rpush info 1 2 3 4

往列表中添加元素

删除列表中第一个元素

移除并返回mykey键的第一个元素,即从右往左第一个

lpop info1

获取列表的长度

llen info

修改列表中元素

lset info 3 5

在指定位置前进行插入元素

linsert info before 2 1

linsert info after 2 1

3、hash数据类型:用于存储对象,采用hash格式进行操作,占用的磁盘空间很少,一个hash可以存储42亿个键值对

创建hash键值

键名+字段名

hset hafo name aa

获取键值对的元素:hget hafo name

查看多个键值

hmget hafo name sex

删除键值

hdel hafo name sex

一次性设置多个字段

hmset info2 name 1 sex male tall 188

hgetall info2查看所有

hkeys info2:查看所有键、字段

hvals info2:查看所有键对应的值

删除键值

del info

4、set数据类型(无序集合),元素类型也是string,元素是唯一的,不允许重复,多个集合类型之间可以进行并集、交集和差集运算

(1)应用场景:set当中的元素类型是唯一的,可以跟踪一些唯一性的数据,例如访问微博的用户名,只要把对应名称redis,set集合可以自动保存

创建

sadd myset a b

查看元素

smembers myset

查看合集中的元素是否存在

sismember myset a

随机返回一个元素

srandmember myset

删除

随机删除一个元素:spop myset

指定名称删除:srem myset a d

5、zset有序集合:元素类型string,元素不能重复,唯一,每个元素都会关联一个double类型(小数点)的分数(score,表示权重),按照通过权重的大小进行排序,元素的权重可以相同

(1)zset应用场景:在线积分的排行榜,可以实时更新用户的分数

(2)zrange命令获取积分,zrank命令通过username获取用户的排行信息等等,按照权重有序排列

创建

zadd myzset 1 one 2 two 3 three

查看元素

查看元素:zrange myzset 0 -1

查看元素+权重:zrange myzset 0 -1 withscores

获取位置索引

zrank myzset one(元素)

查看成员数量

zcard myzset

查看权重范围

zcount myzset 1 2(1《元素》2)

删除元素

zrem myzset three(元素)

查看元素的权重

zscore myzset two

对已有键重命名

rename hafo haa(值不变)

补充:set和hset(创建普通类型和hash类型)的选择:一般情况下,如无特殊需求,普通创建即可,若对一个键进行多字段存储,节省内存,使用hash方式

查看当前库中键的数量

dbsize

切换库

select 0

redis的库都是创建好的,默认16个,数字排名0-15,美格库之间互相独立,互不干扰,默认是0

移动库的内容

move yyy 10

设置密码

config set requirepass 123456

在外声明密码:redis-cli -h 20.0.0.41 -p 6379 -a 123456

在内声明密码:auth 123456

清空当前数据库的数据

flushdb

清空所有库

(不能用)

flushall

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/158548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度学习环境配置(Anaconda+pytorch+pycharm+cuda)

NVIDIA驱动安装 首先查看电脑的显卡版本,步骤为:此电脑右击-->管理-->设备管理器-->显示适配器。就可以看到电脑显卡的版本了。 然后按照电脑信息,到地址 去安装相应的驱动,Notebooks是笔记本的意思,然后下…

数据结构与算法【堆】的Java实现

前言 之前已经说过堆的特点了,具体文章在数据结构与算法【队列】的Java实现-CSDN博客。因此直接实现堆的其他功能。 建堆 所谓建堆,就是将一个初始的堆变为大顶堆或是小顶堆。这里以大顶堆为例。展示如何建堆。 找到最后一个非叶子节点从后向前&…

ChatGPT 使用入门

背景 ChatGPT是一个强大的聊天机器人助手,内置了大量的互联网知识文档,且具有上下文记忆,可以帮我们快速地查找一些资料,了解一个知识,帮我们回答问题,编写代码等。此外,在使用ChatGPT时具有一…

二百零四、Flume——登录监听窗口报错Ncat: bind to :::44444: Address already in use. QUITTING.

一、目的 Flume安装好后测试开启监听窗口44444,结果报错Ncat: bind to :::44444: Address already in use. QUITTING. 二、报错详情 Ncat: bind to :::44444: Address already in use. QUITTING. 三、报错原因 经过分析发现,44444窗口已经被占用 […

多线程访问资源计数不正确问题分析

线程1:首先修改状态为-1,然后分配资源,资源分配成功后,修改状态为0 线程2:查询状态为-1,然后分配资源,资源分配成功后,修改状态为0 存在这种情况,在线程1修改状态为-1时&…

数据结构-快速排序“人红是非多”?看我见招拆招

目录 1.快速排序 Hoare版本: 挖坑法: 前后指针版本: 快速排序的时间复杂度 2.快速排序的优化 三数取中法选key 随机数选key 三路划分法 3. 非递归实现快速排序 1.快速排序 快速排序一共有三种版本:Hoare版本、挖坑法、前后指针版本…

腾讯云轻量数据库开箱测评,1核1G轻量数据库测试

腾讯云轻量数据库1核1G开箱测评,轻量数据库服务采用腾讯云自研的新一代云原生数据库TDSQL-C,轻量数据库兼100%兼容MySQL数据库,实现超百万级 QPS 的高吞吐,128TB海量分布式智能存储,虽然轻量数据库为单节点架构&#x…

kettle spoon连接MySQL8.0数据库报错解决方法

kettle 连接 mysql 8.0报错,显示无法连接到数据库服务 错误连接数据库 [11] : org.pentaho.di.core.exception.KettleDatabaseException: Error occurred while trying to connect to the databaseError connecting to database: (using class org.gjt.mm.mysql.D…

斯坦福NLP课程来了

生成式AI,尤其是以ChatGPT为首的大语言模型正在改变人们的生活方式,我想一定有小伙伴想加入NLP这个行列。 微软重磅发布4个适合初学者的机器学习资料 我在前一篇文章中分享了微软人工智能初学者课程,其中的【生成式AI】非常适合初学者&…

利用 Gem5 模拟器创建一个简单的配置脚本——翻译自官网

文章目录 创建简单的配置脚本gem5 配置脚本关于模拟对象的插话 创建配置文件全系统与系统调用模拟 运行Gem5 创建简单的配置脚本 本章教程将指导你如何为 gem5 设置一个简单的模拟脚本,并首次运行 gem5。我们假定你已完成本教程第一章的学习,并已成功创…

重生奇迹mu格斗怎么加点

1.力量加点 力量是格斗家的主要属性之一,它可以增加你的攻击力和物理伤害。因此,对于格斗家来说,力量加点是非常重要的。建议在前期将大部分的加点放在力量上,这样可以让你更快地杀死怪物,提高升级速度。 2.敏捷加点…

Java 环境其他下载2

1 Eclipse Temurin Latest Releases | Adoptium Eclipse Temurin 是由基于 OpenJDK 的开源 Java SE 产生的构建版本。Temurin 适用于 广泛的平台 以及诸多 Java SE 版本。以下列出了推荐用于生产的最新版本,并且定期由 Adoptium 社区发布更新和支持。迁移帮助、容器…

不是说人工智能是风口吗,那为什么工作还那么难找?

最近确实有很多媒体、机构渲染人工智能可以拿高薪,这在行业内也是事实,但前提是你有足够的竞争力,真的懂人工智能。 首先,人工智能岗位技能要求高,人工智能是一个涵盖了多个学科领域的综合性学科,包括数学、…

虹科分享 | 平衡速度与优先级:为多样化的实时需求打造嵌入式网络(3)——CAN与CANopen的实时能力与局限性

在回顾了选择具有实时能力的嵌入式通信系统的基本要求之后,我们现在将更详细地探讨CAN和CANopen的实时能力和局限性。 控制器局域网(CAN)协议是各个行业众多应用的基础,每个应用都有其独特的实时需求。CANopen和J1939等著名示例强调了该协议的多种适应性…

「浙江科聪新品发布」新品发布潜伏顶升式移动机器人专用控制器

聚焦专用车型 最小专用控制器 控制器只占整机5%,纵向出线方式,占比更小 更易插拔 整体解决方案 更具价格优势 提供整体解决方案,配套各类型产品设备及车体厂家 打造持久稳定使用 坚持工业级品质 采用车规级接口,不用其它类不可…

蓄势・前行 | 博格华纳的新能源+战略布局

10月11日-13日,AWC 2023深圳国际新能源及智能网汽车全产业博览会在深圳国际会展中心盛大开幕,此次展会现场共计接待专业观众3W余名,同期举办20场次主题论坛峰会,不仅汇聚众多中外汽车产业巨擘,更是一场涵盖智能驾驶、新…

(内部资料)收下这几个人工智能学习秘籍!

秘籍一:练好基本功 学习基础知识:人工智能涉及多个学科领域,包括数学、计算机科学、统计学等。因此,学习基础知识是非常重要的。您可以通过学习线性代数、概率论和微积分等数学基础知识,以及掌握Python编程语言和常用…

String类常用方法总结

目录 一.简单认识String 二.String对象的比较 1.equals 内部实现原理: 2.compareTo 3.compareToIgnoreCase 三.字符串查找 示例: 四.字符串与其他类型转化 1.数值和字符串相互转换 2.大小写相互转化 3.字符串转数组 4.格式化转化 五.字符串…

振南技术干货集:制冷设备大型IoT监测项目研发纪实(1)

注解目录 1.制冷设备的监测迫在眉睫 1.1 冷食的利润贡献 1.2 冷设监测系统的困难 (制冷设备对于便利店为何如何重要?了解一下你所不知道的便利店和新零售行业。关于电力线载波通信的论战。) 2、电路设计 2.1 防护电路 2.1.1 强电防护 …

企业该怎么选择IP证书

IP证书是一种数字证书,它由权威的数字证书颁发机构(CA)颁发,部署在只有公网IP地址的站点上,用于在网络中验证身份和保护信息安全。IP证书可以在各种场景下保护网站的信息安全,比如网站vip登录,线…