Redis学习1——redis简介、基础

news2024/12/24 3:00:31

介绍

redis简介

Redis(Remote Dictonary Server) 是由Salvatore Sanfilippo开发的key-value缓存数据库,基于C语言开发。目前市面上,RedisMongoDB是当前使用最广泛的NoSQL,而就Redis技术而言,它的性能十分优越,可以支持每秒十几万此的读/写操作,其性能远超数据库,并且还支持集群、分布式、主从同步等配置,原则上可以无限扩展,让更多的数据存储在内存中,更让人欣慰的是它还支持一定的事务能力,这保证了高并发的场景下数据的安全和一致性。

redis特点

与其他key/value缓存产品相比,redis有以下特点:
**1、**Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;
2、 Redis不仅支持key-value类型的数据,还提供list,set,zset,hash等数据结构的存储;
3、 Redis支持数据的备份,即master-slave模式的数据备份;

Redis安装

window

Redis Windows 下载地址:https://github.com/MicrosoftArchive/redis/releases

linux
$ wget http://download.redis.io/releases/redis-4.0.2.tar.gz
$ tar xzf redis-4.0.2.tar.gz
$ cd redis-4.0.2
$ make

执行上述命令后,进入redis目录下的src目录
启动redis服务

./redis-server

image.png
进入redis命令行

./redis-cli
配置项

进入redis.conf,可以修改一些配置项,主要的配置项如下:

port端口号
dir本地数据库存放目录
dbfilename本地数据库文件名
bind绑定的主机地址
timeout设置客户端闲置多长时间后关闭连接
loglevel日志记录级别,有:debug,verbose,notice,warning,默认为verbose
logfile日志记录方式,默认为标准输出

Redis数据类型

String字符串

最基本的数据类型,一个key对应一个value,redis的string可包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512MB的对象
示例如下:
image.png

命令说明
SET设置指定 key 的值
GET获取指定 key 的值
MSET同时设置一个或多个 key-value 对
MGET获取所有(一个或多个)给定 key 的值
INCR将 key 中储存的数字值增一
INCRBY将 key 所储存的值加上给定的增量值 ( increment )
DECR将 key 中储存的数字值减一
DECRBY将 key 所储存的值减去给定的减量值 ( decrement )
Hash哈希

Redis Hash是一个string类型的field和value的映射表,特别适合用于存储对象。
常用的命令为HMSET KEY FIELD VALUE FIELD VALUE,即同时将多个field-value(域-值)对设置到哈希表key中。示例如下:
image.png
其中,user:1为键

命令说明
HEXISTS查看哈希表 key 中,指定的字段是否存在
HGET获取存储在哈希表中指定字段的值
HSET将哈希表 key 中的字段 field 的值设为 value
HMSET同时将多个 field-value (域-值)对设置到哈希表 key 中
HMGET获取所有给定字段的值
HDEL删除一个或多个哈希表字段
List列表

Redis List为最简单的字符串列表,按照插入顺序排序,可以添加一个元素到列表的头部(左边)或尾部(右边)。
常用的命令有lpush,rpush,lrange,示例如下:
image.png

命令说明
LINDEX通过索引获取列表中的元素
LINSERT在列表的元素前或者后插入元素
LLEN获取列表长度
LPOP移出并获取列表的第一个元素
LPUSH将一个或多个值插入到列表头部
RPOP移除并获取列表最后一个元素
RPUSH在列表中添加一个或多个值
LSET通过索引设置列表元素的值
LRANGE获取列表指定范围内的元素
set集合

Redis是string类型的无序集合,通过哈希表实现,元素具有唯一性。
常用命令有sadd,smembers
image.png

命令说明
SADD向集合添加一个或多个成员
SCARD获取集合的成员数
SDIFF返回给定所有集合的差集
SINTER返回给定所有集合的交集
SISMEMBER判断 member 元素是否是集合 key 的成员
SMEMBERS返回集合中的所有成员
SUNION返回所有给定集合的并集
SREM移除集合中一个或多个成员
zset(sorted set)有序集合

和set一样是string类型元素的集合,不同的是每个元素会关联一个double类型的分数,通过分数为集合中的成员进行从小到大的排序,zset的成员是唯一的,但分数可以重复。
常用命令有:zadd,zrangeByscore
image.png

命令说明
ZADD向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZCARD获取有序集合的成员数
ZCOUNT计算在有序集合中指定区间分数的成员数
ZRANGE通过索引区间返回有序集合成指定区间内的成员
ZRANGEBYSCORE通过分数返回有序集合指定区间内的成员
ZRANK返回有序集合中指定成员的索引
ZSCORE返回有序集中,成员的分数值
Redis Bitmap 位图

通过类似map结构存放0或1(bit位)作为值,可以用来统计状态,如日活,是否浏览过某个东西
image.png

HyperLogLogs基数统计

可以接受多个元素作为输入,并给出输入元素的基数估算值

  • 基数:集合中不同元素的数量,比如 {’apple’, ‘banana’, ‘cherry’, ‘banana’, ‘apple’} 的基数就是 3
  • 估算值:算法给出的基数并不是精确的,可能会比实际稍微多一些或者稍微少一些,但会控制在合 理的范围之内

HyperLogLog 的优点是即使输入元素的数量或体积非常大,计算基数所需空间总是固定的,并且是很小的。
在Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基数
这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比
因为HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素
image.png

命令说明
PFADD添加指定元素到 HyperLogLog 中
PFCOUNT返回给定 HyperLogLog 的基数估算值
PFMERGE将多个 HyperLogLog 合并为一个 HyperLogLog

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

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

相关文章

HackMyVM-Animetronic

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 feroxbuster steghide exiftool hydra ssh连接 提权 系统信息收集 socat提权 信息收集 arp ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7…

jenkins部署想定报错

报错: 解决办法: 登录被编译的设备,清楚旧代码,在重新执行

burp靶场xss漏洞(初级篇)

靶场地址 http://portswigger.net/web-security/all-labs#cross-site-scripting 第一关&#xff1a;反射型 1.发现搜索框直接注入payload <script>alert(111)</script> ​ 2.出现弹窗即说明攻击成功 ​ 第二关&#xff1a;存储型 1.需要在评论里插入payload …

object

object.clone() 在 Java 中&#xff0c;Object.clone() 方法执行的是浅拷贝&#xff08;shallow copy&#xff09;&#xff0c;而不是深拷贝&#xff08;deep copy&#xff09;。 浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a; 浅拷贝是指在拷贝对象时&#xff0…

Al Agent:开启智能化未来的关键角色,让机器更智能的为我们服务

文章目录 &#x1f680;Al Agent是什么&#x1f4d5;Al Agent的工作原理与技术&#x1f4aa;Al Agent应用领域&#x1f680;智能家居应用&#x1f308;医疗健康领域⭐金融服务行业&#x1f302;交通运输管理&#x1f3ac;教育培训应用 &#x1f512;Al Agent优势与挑战✊Al Age…

中国地形可调节高度-UE5-UE4

2000坐标系&#xff0c;可进行高度调整。 支持版本4.21-5.4版本 下载位置&#xff1a;https://mbd.pub/o/bread/ZpWZm5Zs

初探 JUC 并发编程:读写锁 ReentrantReadWriteLock 原理(8000 字源码详解)

本文中会涉及到一些前面 ReentrantLock 中学到的内容&#xff0c;先去阅读一下我关于独占锁 ReentrantLock 的源码解析阅读起来会更加清晰。 初探 JUC 并发编程&#xff1a;独占锁 ReentrantLock 底层源码解析 6.4&#xff09;读写锁 ReentrantReadWriteLock 原理 前面提到的 R…

LeetCode 209 长度最小的子数组(滑动窗口and暴力)

、 法一&#xff1a;滑动窗口 //使用滑动窗口来解决问题 //滑动窗口的核心点有&#xff1a; /*1.窗口内是什么&#xff1f;2.如何移动窗口的起始位置&#xff1f;3.如何移动窗口的结束位置&#xff1f;4.两个指针&#xff0c;怎么判断哪个指针是终止指针&#xff0c;哪个指针…

【核武器】2024 年美国核武器-20240507

2024年5月7日,《原子科学家公报》发布了最新版的2024美国核武器手册 Hans M. Kristensen, Matt Korda, Eliana Johns, and Mackenzie Knight, United States nuclear weapons, 2024, Bulletin of the Atomic Scientists, 80:3, 182-208, DOI: https://doi.org/10.1080/00963…

【JavaScript】内置对象 - 数组对象 ① ( 数组简介 | 数组创建 | 数组类型检测 )

文章目录 一、数组对象1、数组简介2、数组创建3、数组检测 - Array.isArray() 方法4、数组检测 - instanceof 运算符 Array 数组对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array 一、数组对象 1、数组简介 在 JavaScr…

嫁接打印的技术要点

所谓嫁接打印&#xff0c;是一种增减材混合制造的方式。它将已成形的模具零件当作基座&#xff0c;在此基础上“生长”出打印的零件。其中基座通常采用传统加工方式制造&#xff0c;而打印部分则使用专用的金属粉末&#xff0c;通过 3D 打印技术成型。 嫁接打印之所以备受欢迎&…

PyTorch 图像篇

计算机视觉技术是一门包括计算机科学与工程、神经生理学、物理学、信号处理、认知科学、应用数学与统计等多学科的综合性科学技术&#xff0c; 是人工智能的一个重要分支&#xff0c; 目前在智能安防、自动驾驶汽车、医疗保健、生成制造等领域具有重要的应用价值。 计算机视觉…

Spring AOP(3)

目录 Spring AOP原理 代理模式 代理模式中的主要角色 静态代理 动态代理 总结:面试题 什么是AOP? Spring AOP实现的方式有哪些? Spring AOP实现原理 Spring使用的是哪种代理方式? JDK和CGLIB动态代理的区别? Spring AOP原理 代理模式 代理模式, 也叫委托模式. …

网络安全之交换基础

交换属于二层技术。路由器&#xff08;router&#xff09;是三层设备&#xff0c;可以基于IP地址转发&#xff0c;但需要路由表来记录。 交换机&#xff08;switch&#xff09;是二层设备&#xff0c;网桥&#xff08;switch&#xff09;也是二层设备&#xff0c;这两个都是基…

论文解读--------FedMut: Generalized Federated Learning via Stochastic Mutation

动机 Many previous works observed that the well-generalized solutions are located in flat areas rather than sharp areas of the loss landscapes. 通常&#xff0c;由于每个本地模型的任务是相同的&#xff0c;因此每个客户端的损失情况仍然相似。直观上&#xff0c;…

【qt】联合容器和集合容器

联合容器和集合容器 一.QMap1.应用场景2.添加数据3.删除数据4.修改数据5.查找数据6.数据个数7.是否包含8.返回所有的键名 二.QHash1.应用场景&#xff1a; 三.QMultiMap四.QMultiHash五.QSet1.应用场景2.交集3.并集4.差集 总结&#xff1a; 一.QMap 1.应用场景 QMap的底层实现…

【NPM】Nginx Proxy Manager 一键申请 SSL 证书,自动续期,解决阿里云SSL免费证书每3个月失效问题

文章目录 1、NPM 简介2、实战Step 1&#xff1a;环境搭建 也可以看作者安装笔记 Step 2&#xff1a;创建容器 2.1 在系统任意位置创建一个文件夹&#xff0c;此文档以~/nginx-proxy-manager为例。2.2 创建docker-compose.yaml2.3 启动NPM服务 Step 3&#xff1a;配置反向代理3…

Java入门基础学习笔记10——变量

变量的学习路径&#xff1a; 认识变量->为什么要用变量&#xff1f;->变量有啥特点&#xff1f;->变量有啥应用场景&#xff1f; 什么是变量&#xff1f; 变量是用来记住程序要处理的数据的。 变量的定义格式&#xff1a; 数据类型 变量名称 数据&#xff1b; 数…

JavaScript使用 BigInt

在 JavaScript 中&#xff0c;最大的安全整数是 2 的 53 次方减 1&#xff0c;即 Number.MAX_SAFE_INTEGER&#xff0c;其值为 9007199254740991。这是因为 JavaScript 中使用双精度浮点数表示数字&#xff0c;双精度浮点数的符号位占 1 位&#xff0c;指数位占 11 位&#xff…

NB-IoT电表抄表是什么?

1.技术性简述 NB-IoT是一种低功耗广域网络技术性&#xff0c;尤其适用于规模性联接、深层覆盖和低数据传输速率的使用场景&#xff0c;如远程控制电表抄表。相较于传统有线应无线通讯方法&#xff0c;NB-IoT具有更好的穿透性和更广的覆盖面积&#xff0c;即便在地下室或边远地…