网站的js效果代码大全/济宁seo优化公司

网站的js效果代码大全,济宁seo优化公司,网站如何做聚合页面,重庆正云环保建设网站环境 Redis官方网站: Redis - The Real-time Data Platform Redis社区版本下载地址:Install Redis | Docs Memcached官方网站:memcached - a distributed memory object caching system Memcached下载地址:memcached - a dis…

环境

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

Redis社区版本下载地址:Install Redis | Docs

Memcached官方网站:memcached - a distributed memory object caching system 

Memcached下载地址:memcached - a distributed memory object caching system 

 

Redis与Memcached应用场景对比

一、核心特性对比

对比维度RedisMemcached
数据结构支持支持字符串、哈希、列表、集合、有序集合等复杂数据结构,适合多样化数据操作‌仅支持简单键值对存储,适用于单一数据模型场景‌
持久化能力支持RDB快照和AOF日志持久化,数据可恢复‌无持久化机制,宕机后数据丢失‌
内存管理通过VM机制突破物理内存限制,支持大容量数据存储‌使用固定内存分配(slab机制),适合中小规模数据缓存‌
性能表现单核处理,小数据(<100KB)性能更优;支持复杂操作但高并发写入效率略低‌多线程架构,大数据(>100KB)处理性能更高,适合纯缓存场景‌
扩展性支持主从复制、集群模式,适合高可用场景‌依赖第三方工具(如magent)实现分布式,扩展性较弱‌

二、典型应用场景对比

  1. Redis适用场景

    • 会话存储(Session Cache)‌:通过持久化能力保障会话数据安全,支持高可靠性业务‌
    • 实时排行榜/计数器‌:利用有序集合(Sorted Set)实现动态排序,适用于电商、社交等场景‌
    • 消息队列‌:通过List、Pub/Sub等特性支持异步任务处理和事件驱动架构‌
    • 复杂业务逻辑‌:结合Lua脚本和事务机制,满足数据一致性要求高的场景(如秒杀库存扣减)‌
  2. Memcached适用场景

    • 高频读取缓存‌:如静态页面缓存、数据库查询结果缓存,减轻数据库压力‌
    • 临时数据存储‌:用户会话临时信息、非关键性数据(如页面片段缓存),无需持久化保障‌
    • 大规模数据缓存‌:单Value值≤1MB时,多线程架构可高效处理高并发请求‌

三、选型建议

  • 选择Redis的条件‌:

    • 需要复杂数据结构或持久化能力‌
    • 业务涉及实时数据处理或强一致性要求‌
    • 系统需支持高可用集群和横向扩展‌
  • 选择Memcached的条件‌:

    • 仅需简单键值缓存且数据量较小‌
    • 高并发大体积数据(>100KB)处理需求优先‌
    • 轻量级部署,无需额外运维复杂度‌

综合建议‌:若业务场景以高性能缓存为主且无复杂数据处理需求,优先选择Memcached;若需支持多样化数据操作、持久化及高可用,Redis是更优选择‌

附件一:Redis组件POM依赖

Redis

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>3.4.4</version>
</dependency>

或者

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.2.0</version>
</dependency>

附件二:Memcache组件POM依赖

memcache

<dependency><groupId>net.spy</groupId><artifactId>spymemcached</artifactId><version>2.12.3</version>
</dependency>

附件三:Redis基本操作

基础命令

1.ping(心跳检查)

ping    //输入ping 命令,看到PONG响应,说明客户端与Redis的连接正常。

2.get/set(读写键值)

set name xiaoHong    //set key value 会将指定 key-value写入到DB。
get name    //get key 则会读取指定key的value值。

3.select(切换数据库)

select 1    //select db 索引来切换 DB。redis默认有 16 个数据库。默认使用的是 0 号 DB。

4.dbsize(查看key数量)

dbsize  //命令可以查看当前数据库中 key 的数量。

5.flushdb(删除当前库中所有数据)

flushdb    //删除当前库中所有数据,不影响其他DB。

6.flushall(删除所有DB中的数据)

flushall    //清除redis所有DB中的数据

二、Key 操作命令

1.keys(正则匹配键名)

keys *  //匹配所有的key
keys a* //匹配以a开头的key//KEYS pattern 查找所有符合正则 pattern 的 key
//KEYS 速度非常快,但在一个大的数据库中使用它可能会阻塞当前服务器的服务。生产环境中一般不使用该命令,使用scan命令代替。

2.exists(检查key是否存在)

exists key     //若 key 存在,返回 1 ,否则返回 0 。

3.del(删除指定一个或多个key)

del key1 key2 key3    //返回被删除 key 的数量,不存在的 key 会被忽略。

4.rename(修改key名)

rename key newKey    //将key改名为newkey。//当 key 和 newkey 相同,或 key 不存在时,会返回一个错误。
//当 newkey 已经存在时,RENAME 将覆盖旧值。

5.move(移动key数据库DB)

MOVE key db    //将当前数据库的 key 移动到指定数据库 db 当中。//如果当前数据库和目标数据库有相同名字的 key,或者 key 不存在于当前数据库,那么 MOVE 没有任何效果。
//移动成功返回 1 ,失败则返回 0 。

6.type(获取key储存的值类型)

type key    //返回 key 所储存的值的类型//有六种 none (key 不存在)、string (字符串)、list (列表)、set (集合)、zset (有序集)、hash (哈希表)

7.expire/pexpire(设置key有效期)

expire key seconds    //为 key 设置过期时间。当 key 过期时(生存时间为 0),它会被自动删除。//expire 的时间单位为秒,pexpire 的时间单位为毫秒。
//过期时间设置成功返回 1,key 不存在时返回 0 。rename 操作不会改变 key的过期时间。

8.ttl/pttl(获取key剩余生存时间)

ttl key    //time to live,返回给定 key 的剩余生存时间。// key 不存在时,返回 -2 。
// key 存在但没有设置时间时,返回 -1 。
// 返回 key 剩余生存时间。ttl 返回的时间单位为秒,pttl 返回的时间单位为毫秒。

9.persist(去除key的生存时间)

persist key    //当生存时间移除成功返回 1;若 key 不存在或 key 没有设置生存时间,则返回 0。

10.randomkey(随机返回一个 key)

randomkey    //当数据库不为空时,随机返回一个 key(不删除)。当数据库为空时,返回 nil。

11.scan(遍历数据库键)

SCAN cursor [MATCH pattern] [COUNT count] [TYPE type]    //SCAN 命令是一个基于游标 cursor 的迭代器//cursor:本次迭代开始的游标。
//pattern:本次迭代要匹配的 key 的模式。
//count:本次迭代要从数据集里返回多少元素,默认值为 10 。
//type:本次迭代要返回的value 的类型,默认为所有类型。//SCAN 命令被调用之后,会返回一个包含两个元素的数组, 第一个元素是用于进行下一次迭代的新游标,第二个元素则是一个数组, 数组中包含了所有被迭代的元素。
//用户在下次迭代时使用这个新游标作为 SCAN 命令的游标参数,以此来延续之前的迭代过程。
//当 SCAN 命令的游标参数被设置为 0 时,服务器将开始一次新的迭代。如果新游标返回 0表示迭代已结束。
//当数据量很大时,count 的数量的指定可能会不起作用,Redis 会自动调整每次的遍历数目。
//由于 scan 命令每次执行都只会返回少量元素,所以该命令可以用于生产环境,而不会出现像 KEYS 命令带来的服务器阻塞问题。hscan key cursor [MATCH pattern] [COUNT count]    //遍历当前 db 中指定 Hash 表的所有 field-value 对
sscan key cursor [MATCH pattern] [COUNT count]    //遍历当前 db 中指定 set 集合的所有元素
zscan  key cursor [MATCH pattern] [COUNT count]    //遍历当前 db 中指定有序集合的所有元素(数值与元素值)

附件四:Memcache基本操作

存储数据

Memcached提供了多种命令用于存储数据项,包括 set、add 和 replace。以下是这些命令的详细介绍:

set 命令

set 命令用于在缓存中存储一个数据项。如果键已经存在,则覆盖其现有值。

set <key> <flags> <exptime> <bytes> [noreply]\r\n
<value>\r\n


参数说明:

<key>:数据项的键。
<flags>:用户自定义的标志位,通常为0。
<exptime>:过期时间,单位为秒。
<bytes>:数据项的字节数。
[noreply]:可选参数,表示不需要服务器返回响应。
示例代码:

import memcache# 连接Memcached服务器
mc = memcache.Client(['127.0.0.1:11211'])# 存储数据
mc.set('key1', 'value1', time=60)
print("Set key1 to value1")


add 命令

add 命令用于在缓存中添加一个新的数据项。如果键已经存在,则不做任何操作。

add <key> <flags> <exptime> <bytes> [noreply]\r\n
<value>\r\n

示例代码:

# 添加数据
mc.add('key2', 'value2', time=60)
print("Added key2 with value2")

replace 命令

replace 命令用于替换缓存中已有的一个数据项。如果键不存在,则不做任何操作。

replace <key> <flags> <exptime> <bytes> [noreply]\r\n
<value>\r\n


示例代码:

# 替换数据
mc.replace('key1', 'new_value1', time=60)
print("Replaced key1 with new_value1")

 

检索数据

Memcached提供了 get 和 gets 命令用于检索数据项。

get 命令

get 命令用于检索一个或多个数据项的值。

get <key>*\r\n

示例代码:

# 检索数据
value = mc.get('key1')
print("Retrieved key1:", value)
3.2.2 gets 命令
gets 命令与 get 类似,但返回的数据项还包括一个唯一的标识符(cas token),用于数据更新时的乐观锁定。gets <key>*\r\n
示例代码:# 检索数据及其唯一标识符
result = mc.gets('key1')
print("Retrieved key1 with CAS token:", result)

更新数据

Memcached提供了 cas 命令用于数据项的条件更新,利用唯一标识符进行乐观锁定。

cas 命令

cas 命令用于更新一个数据项,但前提是数据项的唯一标识符未改变。

cas <key> <flags> <exptime> <bytes> <cas token> [noreply]\r\n
<value>\r\n

示例代码:

# 条件更新数据
cas_token = result[1]
mc.cas('key1', 'updated_value1', cas_token, time=60)
print("Conditionally updated key1 with updated_value1")

删除数据

Memcached提供了 delete 命令用于删除数据项。

delete 命令

delete 命令用于删除一个数据项。

delete <key> [noreply]\r\n

示例代码:

# 删除数据mc.delete('key1')
print("Deleted key1")

计数器操作

Memcached提供了 incr 和 decr 命令用于操作数据项的计数器值。

incr 命令

incr 命令用于增加数据项的计数器值。

incr <key> <value> [noreply]\r\n

示例代码:

# 增加计数器
mc.set('counter', 10)
mc.incr('counter', 5)
counter_value = mc.get('counter')
print("Counter value after increment:", counter_value)

decr 命令

decr 命令用于减少数据项的计数器值。

decr <key> <value> [noreply]\r\n

示例代码:

# 减少计数器
mc.decr('counter', 3)
counter_value = mc.get('counter')
print("Counter value after decrement:", counter_value)

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

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

相关文章

kettle插件-mysql8数据库插件

场景&#xff1a;群里有小伙伴反馈kettle 7.x版本不能自动连接mysql8&#xff0c;安排&#xff01;&#xff01;&#xff01; 1、将mysql8的驱动包mysql-connector-java-8.0.20.jar丢到kettle的lib目录下&#xff0c;重启spoon。 2、配置数据库连接&#xff0c;提示驱动类不对…

【软件测试】:软件测试实战

1. ⾃动化实施步骤 1.1 编写web测试⽤例 1.2 ⾃动化测试脚本开发 common public class AutotestUtils {public static EdgeDriver driver;// 创建驱动对象public static EdgeDriver createDriver(){// 驱动对象已经创建好了 / 没有创建if( driver null){driver new EdgeDr…

深度学习入门1 基于Python的理论与实现

torch.unsqueeze()将一维数据变为二维数据&#xff0c;torch只能处理二维数据 tensor不能反向&#xff0c;variable可以反向。variable.data.numpy()转换为numpy 第3章 神经网络 实现softmax函数时的注意事项&#xff1a;为防止e的指数运算造成溢出 矩阵的第 0 维是列方向,第…

多版本PHP开发环境配置教程:WAMPServer下MySQL/Apache/MariaDB版本安装与切换

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、版本切换指南总结 前言 由于有几个项目分别使用到PHP7.0 和7.4以及8.0版本&#xff0c;设置mysql也会根据PHP版本使用不同的版本&#xff0c;于是开始研究…

2024年数维杯数学建模C题天然气水合物资源量评价解题全过程论文及程序

2024年数维杯数学建模 C题 天然气水合物资源量评价 原题再现&#xff1a; 天然气水合物&#xff08;Natural Gas Hydrate/Gas Hydrate&#xff09;即可燃冰&#xff0c;是天然气与水在高压低温条件下形成的类冰状结晶物质&#xff0c;因其外观像冰&#xff0c;遇火即燃&#…

Graphpad Prism for Mac医学绘图

Graphpad Prism for Mac医学绘图 文章目录 Graphpad Prism for Mac医学绘图一、介绍二、效果三、下载 一、介绍 GraphPad Prism for Mac是一款功能强大、易于使用的科学和统计分析软件&#xff0c;适用于各种类型的数据处理和可视化需求。无论您是进行基础研究、临床试验还是学…

Android实践开发制作小猴子摘桃小游戏

Android实践制作小猴子摘桃小游戏 实践素材项目源文件获取&#xff1a;Android可能存在版本差异项目如果不能正确运行&#xff0c;可以使用里面的素材自己构建项目Android实践制作小猴子摘桃小游戏Android实践制作小猴子摘桃小游戏https://mp.weixin.qq.com/s/jNU_hVfj9xklsil…

Postman 下载文件指南:如何请求 Excel/PDF 文件?

在 Postman 中进行 Excel/PDF 文件的请求下载和导出&#xff0c;以下是简明的步骤&#xff0c;帮助你轻松完成任务。首先&#xff0c;我们将从新建接口开始&#xff0c;逐步引导你完成整个过程。 Postman 请求下载/导出 excel/pdf 文件教程

21.Excel自动化:如何使用 xlwings 进行编程

一 将Excel用作数据查看器 使用 xlwings 中的 view 函数。 1.导包 import datetime as dt import xlwings as xw import pandas as pd import numpy as np 2.view 函数 创建一个基于伪随机数的DataFrame&#xff0c;它有足够多的行&#xff0c;使得只有首尾几行会被显示。 df …

Elasticsearch客户端工具初探--kibana

1 Kibana简介 Kibana是Elastic Stack&#xff08;ELK&#xff09;中的可视化工具&#xff0c;用于对Elasticsearch中存储的数据进行搜索、分析和可视化展示。它提供了直观的Web界面&#xff0c;支持日志分析、业务监控、数据探索等功能&#xff0c;广泛应用于运维监控、安全分析…

珍珠港海军造船厂的“水魔法”:PcVue赋能造船心脏

导读 项目背景 干船坞运作与控制需求 PcVue SCADA 系统的引入以及系统升级 项目成果 凭借更高的安全性&#xff0c;PcVue 对干船坞的充水和排水过程进行精准控制。 项目背景 珍珠港海军基地与希卡姆空军基地均依托这座历史悠久的港口而发展&#xff0c;该港口在夏威夷原住…

3. 轴指令(omron 机器自动化控制器)——>MC_GearInPos

机器自动化控制器——第三章 轴指令 17 MC_GearInPos变量▶输入变量▶输出变量▶输入输出变量 功能说明▶时序图▶重启运动指令▶多重启动运动指令▶异常 示例程序▶动作示例▶梯形图▶结构文本(ST) MC_GearInPos 设定主轴和从轴间的齿轮比&#xff0c;进行电子齿轮动作。 指定…

vue 加载动态效果,自行封装组件

背景&#xff1a; 在项目开发中&#xff0c;会请求接口&#xff0c;就会遇到加载中、加载成功、加载失败、和加载成功但暂无数据等情况。就自行封装了一个加载组件。采用vue3elementsetup组合式写法。 实现效果&#xff1a; 封装组件&#xff1a; //封装组件 <template>…

八目导航 version:1.2

八目导航 version&#xff1a;1.2 网址&#xff1a;https://crbssseooebc.sealoshzh.site/ 日志&#xff1a; 1.美化了页面 2.新增并替换了部分网址 3.不会出现危险网址提示(指的是进入八目导航时) 4.为网址图标增加了动效 5.采用Vue3框架重新实现了该导航 注意&#xff1a;该…

WebWorkers在项目中的使用案例

Worker | 文档 worker 线程的关闭在主线程和 worker 线程都能进行操作&#xff0c;但对 worker 线程的影响略有不同。 // main.js&#xff08;主线程&#xff09; const myWorker new Worker(/worker.js); // 创建worker myWorker.terminate(); // 关闭worker 复制代码 // wor…

掌握Linux项目自动化构建:从零入门make与Makefile

文章目录 前言&#xff1a; 一、初识自动化构建工具1.1 什么是make/Makefile&#xff1f;1.2 快速体验 二、深入理解核心机制2.1 依赖关系与依赖方法2.2 伪目标的妙用2.3 具体语法a.makefile的基本雏形b.makefile推导原则&#xff01; 三、更加具有通用型的makefile1. 变量定义…

深度分页优化思路

深度分页优化思路 思考以下问题 查询以下SQL的流程是怎么样的呢&#xff1f; 为什么只查询10条数据需要7秒&#xff1f; # 查询时间7秒 SELECT * FROM user ORDER BY age LIMIT 1000000, 10问题分析 为什么分页查询随着翻页的深入&#xff0c;会变得越来越慢。 其实&#xff0…

使用 Vite 提升前端开发体验:入门与配置指南

在现代前端开发中&#xff0c;构建工具的选择对开发效率和项目性能有着至关重要的影响。Vite 是一个新兴的前端构建工具&#xff0c;由 Vue.js 的作者尤雨溪开发&#xff0c;旨在通过利用现代浏览器的原生 ES 模块特性&#xff0c;提供更快的开发服务器启动速度和更高效的热更新…

MYSQL基本语法使用

目录 一、mysql之DML 增加语句 删除语句和truncate 更新语句 replace语句 select查询语句 二、select多种用法 查询时的别名使用 分组 分组后的筛选 结果排序 分页功能 分表 多表关联查询 练习题 一、单表查询 二、多表查询 前面已经学习了mysql的安装和基本语…

自动化测试selenium(Java版)

1.准备工作 1.1.下载浏览器 自动化测试首先我们要准备一个浏览器,我们这里使用谷歌(chrome)浏览器. 1.2.安装驱动管理 每一个浏览器都是靠浏览器驱动程序来启动,但是浏览器的版本更新非常快,可能我们今天测试的是一个版本,第二天发布了一个新的版本,那么我们就要重构代码,很…