iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么使用mysql模拟redis
  • 559
分享到

怎么使用mysql模拟redis

2023-06-27 10:06:38 559人浏览 安东尼
摘要

这篇文章主要介绍“怎么使用mysql模拟redis”,在日常操作中,相信很多人在怎么使用Mysql模拟Redis问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用mysql模拟redis”的疑惑有所帮助!

这篇文章主要介绍“怎么使用mysql模拟redis”,在日常操作中,相信很多人在怎么使用Mysql模拟Redis问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用mysql模拟redis”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Redis是文本协议

redis是文本协议,协议名称叫做RESPRESPRedis 序列化协议的简写。它是一种直观的文本协议,优势在于实现异常简单,解析性能极好。

如图,Redis 协议将传输的结构数据,可以总结为 5 种最小单元类型。每个单元结束时,统一加上回车换行符号 \r\n

下面是几个规则:

单行字符串 以 + 开头;多行字符串 以 $ 开头,后跟字符串长度;整数值 以 : 开头,后跟整数的字符串形式;错误消息 以 - 符号开头;数组 以 * 号开头,后跟数组的长度;

比如,下面这个就是数组[9,9,6]的报文。

*3\r\n:9\r\n:9\r\n:6\r\n

所以这个协议的解析和拼装,是非常简单的。拿Netty来说,就有codec-redis 模块供我们使用。

实现:数据结构设计

在数据表的设计上,我们发现,kvhash在效率上没有什么差别,因为它能够直接根据key定位到。

反倒是zset,由于有排序的功能,造成了很多操作的执行效率都不尽人意。

另外,由于我们不同的数据结构,是使用不同的表进行存储的。所以删除操作,要在每张表上都执行一遍。

kv设计

kv,即string,是redis里最基本的数据类型。一个key对应一个valuestring类型的值最大能存储512MB。

设计专用的数据库rstore_kv,其中,rkey是主键。

rkey        varcharval     varcharlastTime    bigint

set操作

insert into rstore_kv("rkey","val","lastTime") values($1,$2,$3)on duplicate key update set "val"=$2,"lastTime"=$3

get操作

select val from rstore_kv where "rkey" = $1

del操作

delete from rstore_kv where "rkey" = $1

exists操作

select count(*) as n from rstore_kv where  "rkey" = $1

ttl操作

select lastTIme from rstore_kv  where  "rkey" = $1

hash设计

hash 是一个键值(key=>value)对集合hash 特别适合用于存储对象。

设计专用的数据库rstore_hash,其中,rkeyhkey是联合主键。

rkey        varcharhkey        varcharval     varcharlastTime    bigint

hset操作

insert into rstore_hash("rkey","hkey","val","lastTime") values($1,$2,$3,$4)on duplicate key update set "val"=$3,"lastTime"=$4

hget操作

select val from rstore_hash where "rkey" = $1 and "hkey" = $2

hgetall操作

select hkey,val from rstore_hash where "rkey" = $1

hdel操作

delete from rstore_hash where "rkey" = $1 and "hkey" = $2

del操作

delete from rstore_hash where "rkey" = $1

hlen,hexists操作

select count(*) as num from rstore_hash where "rkey" = $1

ttl操作

select max(lastTIme) from rstore_hash  where  "rkey" = $1

zset设计

Redis zsetset 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。它的底层结构是跳跃表,效率特别高,但是会占用大量内存。

设计专用的数据库表rstore_zset,其中,rkeymember是联合主键。

rkey        varcharmember        varcharscore     doublelastTime    bigint

zadd操作

insert into rstore_zset("rkey","member","score","lastTime") values($1,$2,$3,$4) on duplicate key update update set "score"=$3,"lastTime"=$4

zscore操作

select score from rstore_zset where "rkey" = $1 and "member" = $2

zrem操作

delete from rstore_zset where "rkey" = $1 and "member" = $2"

zcard,exists操作

select count(*) as num from rstore_zset where "rkey" = $1

zcount操作

select count(*) as num from rstore_zset where "rkey" = $1 and score>=$2 and score<=$3

zremrangebyscore操作

delete from rstore_zset where "rkey" = $1 and score>=$2 and score<=$3

zrangebyscore操作

select member,score from rstore_zsetwhere "rkey" = $1 and score>=$2 and score<=$3 order by score asc,member asc

zrange操作

select member,score from rstore_zsetwhere "rkey" = $1 order by score asc offset $2 limit $3

zrank操作

select rank from (select member,rank() over (order by "score" asc, "lastTime" asc) as rank from rstore_zset where "rkey" = $1 ) m where m."member"= $2;

ttl操作

select max(lastTIme) from rstore_zset  where  "rkey" = $1

del操作

delete from rstore_zset where "rkey" = $1

set设计

RedisSetstring类型的无序集合。

设计专用的数据库表rstore_set,其中,rkeymember是联合主键。

rkey        varcharmember        varcharlastTime    bigint

sadd操作

insert into rstore_set("rkey","member","lastTime") values($1,$2,$3)on duplicate key update update set "lastTime"=$3

scard操作

select count(*) as num from rstore_set where "rkey" = $1

sismember操作

select member from rstore_set where "rkey" = $1 and "member" = $2

smembers操作

select member from rstore_set where "rkey" = $1

srem操作

delete from rstore_set where "rkey" = $1 and "member" = $2

del操作

delete from rstore_set where "rkey" = $1

ttl操作

select max(lastTIme) from rstore_set  where  "rkey" = $1

到此,关于“怎么使用mysql模拟redis”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么使用mysql模拟redis

本文链接: https://www.lsjlt.com/news/309825.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用mysql模拟redis
    这篇文章主要介绍“怎么使用mysql模拟redis”,在日常操作中,相信很多人在怎么使用mysql模拟redis问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用mysql模拟redis”的疑惑有所帮助!...
    99+
    2023-06-27
  • 如何使用MySQL模拟Redis
    这篇文章给大家分享的是有关如何使用MySQL模拟Redis的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。redis支持近十种数据类型,最常用的有5种。string、hash、zs...
    99+
    2024-04-02
  • MySQL中怎么使用WHILE循环模拟FOR循环
    在MySQL中,没有直接的FOR循环语句,但是可以使用WHILE循环来模拟一个FOR循环。可以使用一个变量来充当计数器,然后在WHI...
    99+
    2024-04-30
    MySQL
  • redis和mysql搭配怎么使用
    redis 和 mysql 搭配使用可以发挥各自的优势:redis:高速读写,适用于缓存、队列处理。mysql:持久化存储,适用于需要持久化、查询关系的数据。搭配使用场景:缓存、队列处理...
    99+
    2024-04-02
  • redis和mysql怎么配合使用
    Redis和MySQL可以通过以下几种方式配合使用:1. 缓存查询结果:将MySQL的查询结果存储到Redis中,当下次需要同样的查...
    99+
    2023-08-18
    redis mysql
  • 怎么使用div模拟实现textarea
    这篇文章主要介绍了怎么使用div模拟实现textarea的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用div模拟实现textarea文章都会有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • PHP中redis哨兵模式怎么使用
    在PHP中使用Redis的哨兵模式,需要安装redis扩展,并设置哨兵模式相关的配置。 步骤如下: 安装Redis扩展:使用`p...
    99+
    2023-10-25
    PHP redis
  • redis逐渐模糊查询怎么使用
    在Redis中进行模糊查询通常可以使用通配符来实现,常见的通配符有:- `*`:匹配任意多个字符- ``:匹配单个字符下面是使用Re...
    99+
    2023-09-05
    redis
  • python怎么使用redis模块来跟redis实现交互
    本篇内容主要讲解“python怎么使用redis模块来跟redis实现交互”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么使用redis模块来跟redis实现交互”吧!redis模...
    99+
    2023-07-02
  • 使用vbscript怎么模拟登录效果
    这篇文章将为大家详细讲解有关使用vbscript怎么模拟登录效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。On Error Resume NextSet&n...
    99+
    2023-06-08
  • 云服务器怎么使用模拟器
    使用云服务器可以通过以下步骤进行:连接到云服务器:首先,需要连接到云服务器以进行配置和启动。可以使用在线连接或者第三方云平台服务。登录云服务器:在启动云服务器之前,需要登录云服务器。可以使用各种云平台提供的客户端或者网站。创建账户:选择一个...
    99+
    2023-10-25
    模拟器 服务器
  • Redis哨兵模式怎么配置和使用
    Redis哨兵模式是一种用于监控和管理Redis主从复制和高可用性的机制。当主服务器出现故障时,哨兵可以自动将从服务器升级为主服务器...
    99+
    2024-05-07
    Redis
  • 如何使用MySQL LEFT JOIN 来模拟MySQL MINUS 查询?
    由于我们无法在 MySQL 中使用 MINUS 查询,因此我们将使用 LEFT JOIN 来模拟 MINUS 查询。可以借助以下示例来理解:示例在此示例中,我们有两个表,即 Student_detail 和 Student_info,其内容...
    99+
    2023-10-22
  • python3-使用requests模拟
    # -*- coding: utf-8 -*- from Crypto.Cipher import AES import base64 import random import codecs import requests from f...
    99+
    2023-01-31
    requests
  • 使用mock.js怎么模拟前后台交互
    本篇文章为大家展示了使用mock.js怎么模拟前后台交互,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、首先安装# 在项目中安装  npm&n...
    99+
    2024-04-02
  • Redis怎么使用
    这篇文章给大家分享的是有关Redis怎么使用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、Redis简介 什么是Redis?全称:REmote DIctionary Serv...
    99+
    2024-04-02
  • 使用Python怎么模拟一个n阶魔方
    今天就跟大家聊聊有关使用Python怎么模拟一个n阶魔方,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。import cv2import numpy as...
    99+
    2023-06-14
  • java中怎么模拟和使用全局变量
    在Java中,没有全局变量的概念。但是可以通过以下几种方式来模拟和使用全局变量:1. 使用静态变量:将需要模拟的全局变量定义为一个静...
    99+
    2023-09-15
    java
  • 怎么用Python模拟死锁
    这篇“怎么用Python模拟死锁”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Pyt...
    99+
    2024-04-02
  • 云服务器怎么使用模拟器功能
    使用云服务器可以使用模拟器来进行安装、配置和测试,以下是一些常见的方法:在浏览器中访问模拟器网站:https://iqcloud.com/yuncloud-server/使用浏览器扩展程序:在模拟器网站上搜索“云服务器”或“云服务器模拟器”...
    99+
    2023-10-25
    模拟器 功能 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作