Redis的五种数据类型与命令

news2024/11/16 19:37:44

目录

引言

一 Redis的特性

二 Redis的安装

三 Redis的优点

四 Redis的五种数据类型与命令

五 Redis的配置文件

引言

Redis是什么? Remote Dictionary Service(远程字典服务器)

Redis 是一个开源的(BSD许可)的,C语言编写的,高性能的数据结构存储系统,它可以用作数据库,缓存和消息中间件。它基于内存运行并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一。

官方网站:Redis - The Real-time Data Platform

关系型数据库:支持表结构

非关系型数据库:不是以表结构存储数据

NoSQL,指的是 ‘非关系型数据库’, ‘NoSQL有时也称作Not Only SQL的缩写’

NoSQL数据库主要有以下四类,这些类别中的每一个都有其独特的属性和局限性:

基于键值对 key-value类型:Redis, memcached

列存储数据库 Column-oriented Graph: HBase

图形数据库 Graph based: Neo4j

文档型数据库: MongoDB

MongoDB是一个基于分布式文件存储的数据库,主要用来处理大量的文档。

一 Redis的特性

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

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

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

3.Redis支持数据的备份,即master-slave模式的数据备份。

二 Redis的安装

以Linux为例:

1.redis官网上下载最新安装包到家目录

Redis 全版本文件地址:Index of /releases/,在其后加上带版本号的包名即可,比如:http://download.redis.io/releases/redis-7.2.4.tar.gz。

通过以下命令下载压缩包

wget http://download.redis.io/releases/redis-7.2.4.tar.gz

2.解压压缩包,然后会在家目录下面生成一个对应文件夹redis-7.2.4。

tar zxvf redis-7.2.4.tar.gz

3.进入到解压后的目录redis-7.2.4中,然后执行下述命令。

cd redis-7.2.4
make
sudo make install

4.进入到utils目录

cd utils

5.接着进入到install_server.sh文件,注释掉下面的内容(大约在77行,有8行,shell的注释是以#进行的注释) 注释之后,保存退出并执行下面命令。

sudo ./install_server.sh

6.之后一直点Enter键

7.检查安装成功后的命令行

redis-cli
# 显示结果如下
127.0.0.1:6739>
ping
# 返回一个PONG

三 Redis的优点

1.性能高 读11w/s 写8.1w/s

2.具有丰富的数据类型(五大数据类型)

3.原子的 操作是原子的,但是redis事务是不支持原子的。

4.丰富的特性,支持发布订阅,通知,支持key过期。

四 Redis的五种数据类型与命令

首先输入 redis-cli

1.string类型

#设置命令
set key value
set k1 100
set k3 300

#获取key值
get k1
get k3

#一次性设置多个值
mset k11 11 k12 12 k13 helloworld k14 12.3
#一次性获取多个值
mget k11 k12 k13 k14

#获取字符串的子串   -1表示倒数第一个
GETRANGE k13 0 1
GETRANGE k13 2 5
GETRANGE k13 0 -1

#设置字符串的字串
SETRANGE k13 0 wu

#在获取的同时进行修改
getset k1 hello

#在设置值的同时 加上过期时间 比如将值设为3000 过期时间20s
setex k1 20 3000

#累加
INCR k1   #每次加1个
INCRBY key + 值   #每次可以增加指定的值

2.list数据类型

# LPUSH key value1 value2...   RPUSH key value1 value2...
#将一个或多个值插入到头部  尾部  头插法  尾插法
lpush list1 1 2 3 4 5 6  8 9
rpush list2 3 2 1 4 5 6

#lpop rpop  在列表两侧删除元素
lpop list1
rpop list1

# lrange list1 0 -1  范围查找
lrange list1 0 -1

#lset list1 0 888888 修改左边的值
lset list1 0 888888

#redis中list是支持下标的(与STL中list不一样)

#lindex list1 8  按下标访问
lindex list1 8

#删除重复元素(与STL中list中unique不一样,unique需要进行sort)
#LREM list1 5 1  删除掉5个1
LREM list1 5 1

#LTRIM list1 1 4  把1-4范围的数据留下来了  TRIM进行修剪
LTRIM list1 1 4

#LINSERT list1 before | after 2 200 这里的2是在元素2前面或后面 插入200  并不是下标值
LINSERT list1 before 2 200

3.set数据类型

#添加元素
sadd myset1 1 2 3 1 2 3 4

#scard myset1 显示元素数量
scard myset1

#smembers myset1 显示元素
smembers myset1

#srandmember myset1 number 随机获取number个数
srandmember myset1 3

#spop myset1 number 随机选取number个元素 并删除
spop myset1 1

#SDIFF key1 key2 出现在key1 不出现在key2的元素
SDIFF myset1 myset2

#SINTER key1 key2 求交集
SINTER myset1 myset2

#SUNION key1 key2 求并集
SUNION myset1 myset2

4.sorted set     即zset数据类型

将每个元素的前面设置一个double分数(看成是权重)

Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但是分数却是可以重复的。

#向有序集合添加一个或多个成员 或者更新已存在成员的分数
zadd zset1 10 str1 20 str2 30 str2 40 str4

#ZCOUNT 计算在有序集合中指定区间分数的成员数
zcout zset1 10 40

#ZRANGE 打印数据和分数
ZRANGE zset1 0 1 withscores

#保证元素的分数值一致的情况下面 使用ZRANGEBYLEX命令
#后面是范围值   [闭区间  (开区间   大于等于 小于
#ZRANGEBYLEX myset2 - +  -表示负无穷  +表示正无穷
zadd myset2 10 k1 10 hello 10 world 10 wangdao
ZRANGEBYLEX myset2 [h [k1  #大于等于h 小于等于k1的字符串

#ZCORE 打印指定元素的分数
zscore zset1 str1

5.hash数据类型(重要)

Redis hash 是一个string类型的field(字段) 和value(值)的映射表,hash特别适合用于存储对象

Key-value模式不变,但value是一个键值对

map<key, map<key1, value>>

#string类型可以看成是key-value类型,但是hash可以看成是 key1 -(key2-value)
#map<key, value>                          map<key1, map<key2, value>>
#set k1 100
#hset hash1 str1 100

#一次可以获取或者设置多个值
#key-people
hmset people age 10 sex man
#获取people的age sex
hmget people age sex

#hkeys people  获取key
hkeys people
#hvalues people

可以练习一下这些命令

五 Redis的配置文件

最后要给大家介绍的是Redis的配置文件,里面有许多对Redis的配置进行了描述,有兴趣的可以自行阅读一下!

路径:/etc/redis下面会有一个6379.conf

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

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

相关文章

Windows电脑如何启动RTSP服务实现本地摄像头数据共享

技术背景 提起Windows共享本地摄像头&#xff0c;好多人想到的是通过ffmepg或vlc串流到服务器&#xff0c;实际上&#xff0c;用轻量级RTSP服务更简单&#xff0c;本文就介绍下&#xff0c;如何用大牛直播SDK的Windows轻量级RTSP服务&#xff0c;采集摄像头&#xff0c;生成本…

记录使用el-form的resetFields时遇到的表单数据回显失败的问题,去除nextTick解决

首先简单介绍一下resetFields的基础作用 element-plus官网el-form介绍 本案例中实现点击每行的编辑按钮时&#xff0c;弹出弹窗和表单 由于设置了表单校验&#xff0c;如图&#xff0c;表单内容不符合设定的校验规则时会有提示 如果仅仅这样就会出现问题&#xff0c;下次打…

分布式搜索引擎ES--Elasticsearch集群

1.Elasticsearch集群的概念 分片机制&#xff1a;每个索引都可以被分片 索引my_doc只有一个主分片&#xff1b;索引shop有三个主分片&#xff1b;索引shop2有5个主分片;(参考前面案例) 每个主分片都包含索引的数据&#xff0c;由于目前是单机&#xff0c;所以副分片是没有的&a…

PyQt ERROR:ModuleNotFoundError: No module named ‘matplotlib‘

Solution:打开cmd输入指令下载malplotlib pip install matplotlib

【Docker】CentOS7环境下的安装

环境展示 安装 配置仓库 sudo yum install -y yum-utils # docker官方key文件下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 建议使用阿里云key文件下载 sudo yum-config-manager --add-repo https://mirrors.aliyun.…

KubeSphere介绍及一键安装k8s

KubeSphere介绍 官网地址&#xff1a;https://kubesphere.io/zh/ KubeSphere愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统&#xff0c;它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用&#xff08;plug-and-play&#xff09;的集成&#xff0…

【Android】数据存储方案——文件存储、SharedPreferences、SQLite数据库用法总结

文章目录 文件存储存储到文件读取文件 SharedPreferences存储存储获取SharedPreferences对象Context 类的 getSharedPreferences() 方法Activity 类的 getPreferences() 方法PreferenceManager 类中的 getDefaultSharedPreferences() 方法 示例 读取记住密码的功能 SQLite数据库…

【解决方案】华普微汽车智能钥匙解决方案

一、方案概述 1.什么是被动式无钥匙进入 "被动式无钥匙进入"&#xff08;Passive Keyless Entry&#xff09;是一种用于车辆、建筑物或其他设施的访问控制系统。它利用无线射频技术自动判断用户是否接近&#xff0c;并进行身份识别以执行开锁或落锁动作&#xff0c…

【Unity2D 2022:UI】TextMeshPro组件无法显示中文

在Unity中创建了一个预制体Card&#xff0c;上面挂载了一些Text Mesh Pro组件用来显示卡牌信息。但是在输入文字后&#xff0c;发现无法显示中文&#xff1a; 解决方法如下&#xff1a; 一、导入字体文件&#xff08;ttf格式&#xff09;和常用字字集&#xff08;txt格式&…

leetcode日记(51)不同路径Ⅱ

和上一道题&#xff08;无障碍物的最短路径&#xff09;很像&#xff0c;但事实上比上一题多了优化方法 根据上一题改的代码如下&#xff0c;添加了对障碍物的判定&#xff0c;如果有障碍物则将数组值设为0。 class Solution { public:int uniquePathsWithObstacles(vector&l…

理发店收银管理系统 python、sqlite3、pyqt5

给姐姐家店写的一个&#xff0c;功能比较简单&#xff0c;结合gpt 功能包含&#xff1a;次卡和充值卡&#xff0c;可以查剩余次数、以及查找消费记录 后期会把sqlite3转到mysql&#xff0c;换成springboot的一个项目 1.使用技术&#xff1a; Python、sqlite3、PyQt5 2.页面 …

快手可灵视频生成大模型全方位测评

快手视频生成大模型“可灵”&#xff08;Kling&#xff09;&#xff0c;是全球首个真正用户可用的视频生成大模型&#xff0c;自面世以来&#xff0c;凭借其无与伦比的视频生成效果&#xff0c;在全球范围内赢得了用户的热烈追捧与高度评价。截至目前&#xff0c;申请体验其内测…

如何使用C#自制一个Windows安装包

原文链接&#xff1a;https://www.cnblogs.com/zhaotianff/p/17387496.html 以前都在用InstallShield制作安装包&#xff0c;基本需求是能满足的&#xff0c;但也有一些缺点&#xff1a; 1、界面不能完全定制 2、不能直接调用代码里的功能 平常使用一些其它软件&#xff0c;…

ETL数据集成丨将PostgreSQL数据库数据实时同步至PostgreSQL

前言 我们在进行数据集成、实时数据同步中&#xff0c;经常会出现在同一个数据库中做数据同步和复制、实时分析和报告、负载均衡和高可用性等场景&#xff0c;这次我们以PostgreSQL为例&#xff0c;通过ETLCloud工具&#xff0c;进行同数据库中数据实时同步的步骤应该如何设置…

Anconda 快速常用命令简洁版

目的&#xff1a;简单清楚的使用基本的conda 命令 可能需求 查看项目中的虚拟环境及依赖是否满足需求操作新环境来满足项目或者论文的实现 Anconda 常用命令 conda 查看基础命令1. 进入Anaconda 环境2. 查看版本3.查看有哪些虚拟环境4.激活虚拟环境5. 进入虚拟环境查看6. 退出…

shopee虾皮 java后端 一面面经 整体感觉不难

面试总结&#xff1a;总体不难&#xff0c;算法题脑抽了只过了一半&#xff0c;面试官点出了问题说时间到了&#xff0c;反问一点点&#xff0c;感觉五五开&#xff0c;许愿一个二面 1.Java中的锁机制&#xff0c;什么是可重入锁 Java中的机制主要包括 synchronized关键字 Loc…

微信小程序之计算器

在日常生活中&#xff0c;计算器是人们广泛使用的工具&#xff0c;可以帮助我们快速且方便地计算金额、成本、利润等。下面将会讲解如何开发一个“计算器”微信小程序。 一、开发思路 1、界面和功能 “计算器”微信小程序的页面效果如图所示 在计算器中可以进行整数和小数的…

NET8部署Kestrel服务HTTPS深入解读TLS协议之Certificate证书

Certificate证书 Certificate称为数字证书。数字证书是一种证明身份的电子凭证&#xff0c;它包含一个公钥和一些身份信息&#xff0c;用于验证数字签名和加密通信。数字证书在网络通信、电子签名、认证授权等场景中都有广泛应用。其特征如下&#xff1a; 由权威机构颁发&…

Minos 多主机分布式 docker-compose 集群部署

参考 docker-compose搭建多主机分布式minio - 会bk的鱼 - 博客园 (cnblogs.com) Minio 是个基于 Golang 编写的开源对象存储套件&#xff0c;虽然轻量&#xff0c;却拥有着不错的性能 中文地址&#xff1a;MinIO | 用于AI的S3 & Kubernetes原生对象存储 官网地址&#xf…

数字看板:跨行业需求下的创新与升级

在当今这个数据驱动的时代&#xff0c;数字看板作为信息展示与决策支持的重要工具&#xff0c;正逐步渗透到各行各业之中。从智慧城市到智能制造&#xff0c;从金融分析到医疗健康&#xff0c;数字看板以其直观、动态、高效的特点&#xff0c;成为了连接数据与决策者的桥梁。本…