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

介绍

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.mzph.cn/diannao/9545.shtml

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

相关文章

仿真相关知识积累

融合模型是什么 集成学习 融合模型,也称为集成学习,是一种将多个基模型组合在一起以提升整体模型性能的方法。这种思想通过不同的策略将多个相对较弱的模型(学习器)结合起来,从而达到较强的模型性能。

rngd: Error writing /dev/tpm0

检查数据库时发现messages中一直有rngd报错,rngd一直未配置,直接关闭了 /var/log/messages-20240414:Apr 11 04:59:49 hydb2 rngd: Error writing /dev/tpm0 /var/log/messages-20240414:Apr 12 07:31:39 hydb2 rngd: Error writing /dev/tpm0 /var/log…

shell-for循环语句练习题

1.计算从1到100所有整数的和 [rootlocalhost ~]# vim 1.sh #!/bin/bash sum0 #定义变量sum初始值为0 for i in {1..100} #for循环 i取值从1到100 do sum$[ isum ] #在每次循环中,变量i的值会依次取1到100的整数值。 #sum是一个累加器,初始值…

echarts自定义图例显示名称、数值、占比

先上代码 legend: {orient: vertical,left: 10,top:20,data: data,textStyle: {color: #9FB7D5 // 设置图例文字颜色为白色},// type: plain, // 设置图例类型为普通类型itemWidth: 10, // 设置图例项的宽度itemHeight: 10, // 设置图例项的高度formatter: function(name) {let…

Python专题:十、字典(2)

字典定义x{} get()函数 get(参数一,参数二) 参数一: 需要查找的关键词 参数二: 如果关键词不存在get返回的默认值 字典的更新 update()函数,字典y的元素,去更新字…

学生管理系统初级

根据题目要求生成大纲 总结: 1.在书写时,考虑到了书写时id可是是abc... 类型是String,但在根据id获取集合中元素时 list.get() ,get()里面是int类型。 2.在书写还有一点功能并不完全, 2.1查找时是打印所有…

缓存雪崩、缓存击穿、缓存穿透是什么、之间的区别及解决办法

缓存雪崩、缓存击穿、缓存穿透: 详细介绍看这篇文章,写得很好: 什么是缓存雪崩、缓存击穿、缓存穿透 下面是我自己总结的,比较简单清楚地展示了缓存雪崩、缓存击穿和缓存穿透的根本区别和相应的解决办法。强烈建议看完上述文章后…

十.吊打面试官系列-Tomcat优化-通过压测Tomcat调优实战

前言 上一篇文章我们讲解了一下Tomcat底层的结构和执行原理,我们需要重点去掌握的是Tomcat的高内聚低耦合的设计,以及责任链模式,以及Tomcat NIO编程模式,这些是Tomcat比较核心的点,本篇文章我们将对Tomcat的参数做一…

Java学习【类与对象】

类和对象 开始我们就不讲那些把大象放冰箱需要几步来引入面向对象的例子了,直接上干货。 在Java中,类是对现实世界中某一类事物的抽象描述。它包含了该类事物的属性和方法。属性用于描述事物的状态,而方法则用于描述事物可以做的事情。对象也…

Redis 支持的 Java 客户端都有哪些?

Redis 是一种高性能的键值存储系统,它以其快速、灵活和可扩展的特性而闻名。在 Java 开发中,与 Redis 交互的方式通常是通过使用 Redis 的 Java 客户端。 这些客户端提供了访问 Redis 数据库的接口,使开发人员能够在 Java 应用程序中轻松地使…

MongoDB聚合运算符:$topN

MongoDB聚合运算符:$topN 文章目录 MongoDB聚合运算符:$topN语法用法关于null和缺失值的处理BSON数据类型排序 举例查找三个得分最高的查找全部游戏中三个最高的得分基于分组key来计算参数n $topN聚合运算符返回分组中指定顺序的最前面 n个元素&#xf…

使得安全团队难以准确评估网络的真实安全状况

防火墙策略管理与策略分析:如何准确评估网络真实安全状况 摘要 随着信息技术的飞速发展,网络安全问题日益严重。防火墙作为网络安全的第一道防线,对于保障网络的安全具有重要意义。然而,在实际应用中,由于防火墙策略管…

704. 二分查找

Problem: 704. 二分查找 🐷我的leetcode主页 文章目录 题目分类思路什么是二分查找如何理解时间复杂度 解题方法Code 题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target&a…

电脑设置在哪里打开?Window与Mac双系统操作指南

随着科技的不断发展,电脑已经成为我们日常生活和工作中不可或缺的一部分。然而,对于许多初学者来说,如何找到并熟悉电脑的设置界面可能是一个挑战。特别是对于那些同时使用Windows和Mac双系统的用户来说,更是需要一篇详尽的指南来…

qml 和 c++类的数据交互

1、 新建一个需要交互的C++类 1)添加QObject头文件 2)添加自QObject的继承 3)添加Q_OBJECT宏 4)使用Q_PROPERTY,定义两个交互的属性,并设置读写的方法和变更属性的信号。 5)添加方法、槽函数和变量 2、在main.cpp中添加实例化对象的QML上下文 1)添加需要QML交互的…

【QT教程】QT6音视频性能优化技巧 QT音视频

QT6音视频性能优化技巧 使用AI技术辅助生成 QT界面美化视频课程 QT性能优化视频课程 QT原理与源码分析视频课程 QT QML C扩展开发视频课程 免费QT视频课程 您可以看免费1000个QT技术视频 免费QT视频课程 QT统计图和QT数据可视化视频免费看 免费QT视频课程 QT性能优化视频免费…

在做题中学习(54):点名

LCR 173. 点名 - 力扣(LeetCode) 此题有不同的几种解法: 解法一:暴力枚举 O(n); 解法二:哈希表 把原数组丢入哈希表,遍历哈希表,看看哪个数值为0即可。 O(n)空间O(n)时间 解法三&…

责任链模式案例

需求背景&#xff1a; 请你设计一个员工休假审批流程&#xff0c;当员工的休假天数<1时&#xff0c;由直接领导审批&#xff0c;休假天数<2时&#xff0c;分别由直接领导、一级部门领导审批&#xff0c;休假天数>3时&#xff0c;分别由直接领导、一级部门领导、分管领…

Redis如何避免数据丢失?——RDB

目录 1. RDB机制的配置 2. fork()函数和写时复制(Copy On Write&#xff09; 什么是Copy On Write 系统fork中使用Copy On Write机制 3. RDB文件结构 RDB文件内容和内容顺序 InfoAuxFields是rdb信息数据 数据库数据 数据 数据存储格式 字符串编码 操作码 4. RDB的2…

ES6(ES2015) 之后,新增的哪些特性是你日常使用的

ES2016 Array.prototype.includes&#xff1a;用来判断一个数组是否包含一个指定的值&#xff0c;根据情况&#xff0c;如果包含则返回 true&#xff0c;否则返回 false。 [1, 2, 3].includes(2); // true [1, 2, 3].includes(4); // false [1, 2, 3].includes(3, 3); // fal…