百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

你不知道的Redis:入门?数据结构?常用指令?

mhr18 2024-11-20 18:47 23 浏览 0 评论

推荐学习

一、Redis入门

1.1 redis简介

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API其中value 可以为string、hash、list、set、zset 等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务,流水线,等附加功能

流水线

Redis 的流水线功能允许客户端一次将多个命令请求发送给服务器,并将被执行的多个命令请求的结果在一个命令回复中全部返回给客户端,使用这个功能可以有效地减少客户端在执行多个命令时需要与服务器进行通信的次数。

数据存放

1,Redis安装在磁盘;

2,Redis数据存储在内存

redis简单使用

比如说,数据库有一张表Order订单表, 表主键orderid

1.2 Redis特性

  1. 速度快,数据放在内存中,官方给出的读写性能10 万/S,与机器性能也有关
  2. 键值对的数据结构服务器
  3. 丰富的功能:见上功能
  4. 简单稳定:单线程
  5. 持久化:发生断电或机器故障,数据可能会丢失,持久化到硬盘
  6. 主从复制:实现多个相同数据的redis 副本
  7. 高可用和分布式:哨兵机制实现高可用,保证redis 节点故障发现和自动转移
  8. 客户端语言多:java php python c c++ nodejs 等

1.3 redis性能高性能原因

  1. 纯内存访问
  2. 非阻塞I/O(使用多路复用)
  3. 单线程避免线程切

1.3 redis使用场景

  1. 缓存:合理使用缓存加快数据访问速度,降低后端数据源压力
  2. 排行榜:按照热度排名,按照发布时间排行,主要用到列表和有序集合
  3. 计数器应用:视频网站播放数,网站浏览数,使用redis 计数
  4. 社交网络:赞、踩、粉丝、下拉刷新
  5. 消息队列:发布和订阅

1.4 redis基本操作

二、Redis数据结构介绍

2.1 字符串

字符串类型:实际上可以是字符串(包括XML JSON),还有数字(整形 浮点数),二进制(图片 音频 视频),最大不能超过512MB

注意:若没有mget命令,则要执行n次get命令

2.2 哈希(Hash)

2.2.1 hash存储对象

redishash和JAVA的hash结构是一样的,我们可以将一些数据库的热点数据写入redis中。例如:

1,用户表数据如下:

2,存储到Redis, 使用字符串如何完成存储操作?

3,哈希hash是一个string类型的field和value的映射表,hash特适合用于存储对象

操作指令: hmset user:1 name Dk age 18

2.2.2 hash常用命令

2.2.3 hash对象存放优点

1,原生:set user:1:name Dk;

set user:1:age 23;

set user:1:sex boy;

优点:简单直观,每个键对应一个值

缺点:键数过多,占用内存多,用户信息过于分散,不用于生产环境

2,将对象序列化存入redis

set user:1 serialize(userInfo);

优点:编程简单,若使用序列化合理内存使用率高

缺点:序列化与反序列化有一定开销,更新属性时需要把userInfo全取出来进行反序列化,更新后再序列化到redis

3,使用hash类型

hmset user:1 name Dk age 23 sex boy

优点:简单直观,使用合理可减少内存空间消耗

缺点:要控制ziplist与hashtable两种编码转换,且hashtable会消耗更多内存erialize(userInfo);

2.2.4 内部编码

hash的内部编码主要有ziplist<压缩列表>和hashtable<哈希表>两种,大家感兴趣的话后面可以单独个章节介绍下这两种数据结构

当field 个数少且没有大的value 时,内部编码为ziplist

如:hmset user:3 name Dk age 24; object encoding user:3 //返回ziplist

当value 大于64 字节,内部编码由ziplist 变成hashtable

如:hset user:4 address “fsgst64 字节”; object encoding user:3 //返回hashtable

2.3 列表<list>

2.3.1 list简介

用来存储多个有序的字符串,一个列表最多可存2的32次方减1个元素

因为有序,可以通过索引下标获取元素或某个范围内元素列表,列表元素可以重复

2.3.2 list常用命令

2.4 集合<set>

2.4.1 集合应用场景

用户标签,社交,查询有共同兴趣爱好的人,智能推荐

保存多元素,与列表不一样的是不允许有重复元素,且集合是无序,一个集合最多可存2的32次方减1个元素,除了支持增删改查,还支持集合交集、并集、差集;

2.4.2 set命令:

2.4.3 使用示例

当我们要根据用户标签筛选有同兴趣爱好的人,实现智能推荐,可以按照这种方式进行计算

1、给用户添加标签:

sadd user:1:fav basball fball pq

sadd user:2:fav basball fball

............

2、或者标签添加用户

sadd basball:users user:1 user:2

sadd fball:users user:1 user:2

.......

3、计算出共同感兴趣的人:

sinter user:1:fav user2:fav

2.5 有序集合(ZSET)

2.5.1 常用场景

常用于排行榜,如视频网站需要对用户上传视频做排行榜,或点赞数。与集合有联系,不能有重复的成员

三、redis常用命令

3.1 常用命令

1,查看所有键:

keys * set school enjoy set hello world

keys *ool -----> school

2,总数 :

dbsize //2个键,如果存在大量键,线上禁止使用此指令

3,检查键是否存在:

exists key //存在返回1,不存在返回0

4,键过期:

expire key seconds //set name test expire name 10,表示10秒过期

ttl key // 查看剩余的过期时间

5,键的数据结构类型:

type key //返回string,键不存在返回none

3.2 redis数据库管理

默认支持16个数据库;可以理解为一个命名空间

跟关系型数据库不一样的点

  1. redis不支持自定义数据库名词
  2. 每个数据库不能单独设置授权
  3. 每个数据库之间并不是完全隔离的。 可以通过flushall命令清空redis实例面的所有数据库中的数据

通过 select dbid 去选择不同的数据库命名空间 。 dbid的取值范围默认是0 -15

作者:Dark_King_

原文链接:https://blog.csdn.net/b379685397/article/details/106850757

相关推荐

【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...

Pure Storage推出统一数据管理云平台及新闪存阵列

PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...

对Java学习的10条建议(对java课程的建议)

不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...

SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!

官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...

JDK21有没有什么稳定、简单又强势的特性?

佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...

「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了

在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...

Java面试题及答案最全总结(2025版)

大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...

数据库日常运维工作内容(数据库日常运维 工作内容)

#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...

分布式之系统底层原理(上)(底层分布式技术)

作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...

oracle 死锁了怎么办?kill 进程 直接上干货

1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...

SpringBoot 各种分页查询方式详解(全网最全)

一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...

《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略

《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...

LoadRunner(loadrunner录制不到脚本)

一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...

Redis数据类型介绍(redis 数据类型)

介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...

RMAN备份监控及优化总结(rman备份原理)

今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...

取消回复欢迎 发表评论: