redis高级用法

Redis 基础和高级用法入门 Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用户解决问题,而不会像其他数据库那样,要求用户扭曲问题来适应数据库。除此之外,通过复制、持久化(persistence)和客户端分片(client-side sharding)等特性,用户可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。 阅读详情

redis 慢日志查询

配置参数
slowlog-log-slower-than 10000 #单位微秒
slowlog-max-len 选项指定服务器最多保存多少条慢查询日志

redis-cli 
	 slowlog get #获取慢日志
	 1) 1) (integer) 4               # 日志的唯一标识符(uid)
		2) (integer) 1378781447      # 命令执行时的 UNIX 时间戳
		3) (integer) 75507           #命令执行所需时间,微妙,乘以  10负六次方  
	    4) 1) "slowlog"              #执行的命令和参数
	        2) "get"

redis三种启动方式:

  1. /redis-server & 命令行后台程序运行启动
  2. redis-server ./redis.conf #指定配置文件启动
  3. cd /usr/local/redis/utils/redis_init_script 开机启动
    mkdir /etc/redis/
    cp redis.conf /etc/redis/6379.conf 
    cp redis_init_script /etc/init.d/redisd  
    

此处直接配置开启自启动chkconfig redisd on将报错误:service redisd does not support chkconfig
参照http://www.cnblogs.com/goodspeed/archive/2012/10/18/2729615.html,在启动脚本开头添加如下两行注释以修改其运行级别:

#!/bin/sh  
# chkconfig:   2345 90 10  
# description:  Redis is a persistent key-value database  
#  

再设置即可成功。

#设置为开机自启动服务器  
chkconfig redisd on  
#打开服务  
service redisd start  
#关闭服务  
service redisd stop 

redis pipeline 利用管道加快执行速度

原生批量命令是原子性,Pipeline是非原子性的.

pipeline 只是把多个redis指令一起发出去,redis并没有保证这些指定的执行是原子的;multi相当于一个redis的transaction的。

Redis服务端在上海,两地直线距离为1300公里,那么1次RTT时间=1300×2/(300000×2/3)=13毫秒(光在真空中传输速度为每秒30万公里,这里假设光纤的速度为光速的2/3),那么客户端在1秒内大约只能执行80次左右的命令,这个和Redis的高并发高吞吐背道而驰.

<?php   
$redis = new Redis();   
$redis->connect('127.0.0.1', 6379);    
$pipe = $redis->multi(Redis::PIPELINE);   
for ($i = 0; $i <  10000; $i++) {   
    $pipe->set("key::$i", str_pad($i, 4, '0', 0));   
    $pipe->get("key::$i");   
}   
      
$replies = $pipe->exec(); echo " "; print_r($replies);

$ret = $redis->multi()
    ->set('key1', 'val1')
    ->get('key1')
    ->set('key2', 'val2')
    ->get('key2')
    ->exec();
 
/*
$ret == array(
    0 => TRUE,
    1 => 'val1',
    2 => TRUE,
    3 => 'val2');
*/

redis事务

Redis提供了简单的事务以及集成Lua脚本来解决这个问题.

Redis提供了简单的功能,将一组需要一起执行的命令放到multi和exec两个命令之间.multi命令代表事务的开始,exec命令代表事务结束,他们之间的命令是原子顺序执行的.

   127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> hincrby commodity:a:detail stock -1
    QUEUE
    127.0.0.1:6379> rpush user:1:orders {"commodity":'a',..}
    QUEUE

可以看到数据操作命令返回的结果是QUEUE,代表命令并没有真正执行,而是暂时保存在Redis中.如果此时另一个客户端执行llen user:1:orders返回结果为0.

只有当exec执行后,用户购买商品的行为才算完成,如下两个结果对应hincrby和rpush命令.

127.0.0.1:6379> exec
    1) (integer) 4  # 商品原库存为5
    2) (integer) 1
    127.0.0.1:6379> llen user:1:orders
    (integer) 1

TIP:
如果要停止事务的执行,可以使用discard命令替代exec命令即可.
如果事务中的命令出现错误,Redis的处理机制也不尽相同可以看到Redis并不支持回滚功能,开发者需要自己修改这类问题.

好的文章:
https://blog.youkuaiyun.com/qmhball/article/details/79074421
https://segmentfault.com/a/1190000011440752

redis 发布订阅

发布者(publisher)====>>> Redis Server接受者(subcriber)
—通过频道沟通—
客户端服务端客户端 订阅相关的订阅

发布订阅,只能获取新订阅之后的数据,而不能获取该频道之前的数据 VS 队列

###发布订阅API

####发布者


发布 publish # public channel message eg:publich shohu:tv “hellow world” 返回订阅者个数

pubsub channels #列出至少有一个订阅者的频道
pubsub numsub [channel] #列出给定频道的订阅者数量
pubsub numpat #列出被订阅模式的数据量

####订阅者


unsbscribe 取消订阅
subscribe [channel] 一个或多个 subscribe sohu:tv 订阅
psubscribe [pattern] 匹配订阅
punsubscribe [pattern] 退订制定的模式

##消息队列和消息队列


这里写图片描述

#bitmap 位图操作

setbit key offset value[0/1] 给位图制定索引设置值 #注意很短的位图上偏移量不要过大。(单线程redis)
getbit key offset
bitcount key [start end] 获取位图指定范围(单位为字节,如果不指定则获取所有)值为1的值
bitop op destkey key [key] 做多个bitmap 的and(交集), or(并集), not(非),xor(异或)操作并将结果保存到destkey中
bitop key targetBit [start] [end] 不指定获取全部,计算位图指定范围第一个偏移量对应的值等于targetBit的 位置

redis 可以直接操作位~

eg:
127.0.0.1:6379> set hello big
OK
127.0.0.1:6379> setbit hello 7 1 
(integer) 0
127.0.0.1:6379> get hello
"cig"

   

eg: setbit hello 0 1


bitop and unique:users unique:users:2016-04-05 unique:users:2016-04-04  返回并集数
bitcount unique:users  #返回不为0 的个数

bitop unique:users:2016-04-04 1 获取2016年4月4日中 值为1的 键名
bitop unique:users:2016-04-04 1 2 8

用户统计
set : 每个userid占用空间32位, 325000w = 200M
bitmap : 每个useid占用1位 1
1亿 =12.5M

set最大存储512MB
setbit 时注意偏移量,可能有较大耗时
位图不是绝对好

redis-cli 使用密码登录的实例 今天小编就为大家分享一篇redis-cli 使用密码登录的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 立即下载

相关推荐

手把手教你用P-MOS管搭建双电源自动切换电路(含AO3401选型指南)

本文提供了一份基于P-MOS管AO3401构建高可靠双电源自动切换电路的实战指南。文章详细对比了继电器、理想二极管与MOS管方案的优劣,深入解析了AO3401的关键参数选型,并手把手指导了从原理图设计、PCB布局到上电调试的全过程,旨在帮助硬件工程师和创客以极低成本实现无缝、高效的电源冗余方案。

moss5的博客 1228

ubuntu Redis安装测试、设置用户名密码

Redis安装测试安装Redis服务器端sudo apt-get install redis-server开启服务:sudo service redisd start关闭服务:sudo service redisd stop通过启动命令检查Redis服务器状态sudo /etc/init.d/redis-server status进入redis,测试是否安装成功redis-cli查看所有的key列...

zhangaik的博客 1万+

Vim 入门到够用:Linux 文本编辑器的三种模式、常用操作与实战技巧

i 进入编辑模式Esc 退出编辑模式回到命令模式: 从命令模式进入底行模式编辑,不一定非得“打开就直接打字”。一旦你接受了“模式”这件事,后面很多操作都会顺起来。学 Vim,不要追求一次学全,先把“命令模式—编辑模式—底行模式”这条主线练熟。只要这条主线通了,后面的复制、删除、搜索、替换,都是顺手补上去的能力。

Web安全工具库 797

Redis设置用用户名以及在java项目中如何配置

= 没有被注解掉并且以user开头的内容为你使用redis无密码登录时生成的,并且这个代码配置不会随着你配置redis密码以及redis用户名而消失,需要你手动注释或者删除,下面的背注解代码则是redis用户名的配置其中:user 后面的all为用户名 on> 后面的 allpass为用户的密码==而密码后面的那些配置为用户的权限配置这里我给当前用户配置的权限与默认用户权限相同。这样就完整的配置了redis的用户名,并且整合在项目中。2.在java的yml文件中需要配置用户名。

weixin_48293596的博客 2903

RAG——从0到1快速搭建RAG应用

本文介绍了基于LangChain框架构建RAG(检索增强生成)应用的技术方案,涵盖核心模块选型与实现流程。技术栈包括:LangChain应用框架、pypdf文档解析、RecursiveCharacterTextSplitter文本分块、bge-small-zh-v1.5向量模型、Faiss向量库和通义千问大模型。文章详细说明了开发环境配置步骤,包括虚拟环境创建、依赖库安装和模型下载。核心代码分为索引、检索、生成三大流程,索引流程完成PDF文档解析、分块和向量化存储;检索流程实现查询向量化和相似度匹配;生成流

小志的博客 589

从动态规划到最优控制:Hamilton-Jacobi-Bellman (HJB) 方程的核心思想与应用

本文深入解析了Hamilton-Jacobi-Bellman (HJB) 方程的核心思想与应用,从动态规划到最优控制的演变过程。通过实际案例展示了HJB方程在机器人路径规划、工业机械臂优化等领域的实践价值,并探讨了数值求解方法和深度学习结合的神经HJB前沿进展。

weixin_28700411的博客 452

redis查看用户名和密码

配置相关视频讲解:C语言程序设计入门之环境安装如何查看Redis的用户名和密码 1. 流程概述 在Redis中,用户名和密码是用来保护数据库安全的重要组成部分。要查看Redis的用户名和密码,需要通过一系列步骤来完成。下面是整个流程的步骤概述: 步骤 操作 1 连接到Redis服务器 2 查看Redis...

weixin_35659005的博客 5815

模电专题-MOS管的放大电路分析

在实际应用中,我们经常会使用到功率MOS,这时通常不会将它当成一个开关使用,而是当成一个放大器来使用,那这就需要让其工作在放大状态。参考下图中的mos管的特性曲线,右图中的输出特性曲线中有一根红色的分界线,这个线就是区分mos管工作状态的分界线,在红线的左边,mos管工作在可变电阻区,也就是线性区;在红线的右边mos管工作在恒流区,也就是饱和区。当然,还有一个截止区。本文分析主要运用模电课本中的理论计算验证。

Anitawen的博客 2万+

【Spring】Day19

当已经安装Redis,并确保环境变量可用后,可以在命令提示符窗口(CMD)或终端(IDEA的Terminal,或MacOS/Linux的命令窗口)中执行相关命令。在终端下,可以通过redis-cliredis-cli在Redis客户端中,可以通过ping检测Redis是否正常工作,将得到PONGping在Redis客户端中,可以通过set命令向Redis中或在Redis客户端中,可以通过get命令从Redis中get name如果使用的Key并不存在,使用get命令时,得到的结果将是(nil)

shortcutsuccess的博客 736

大疆OcuSync vs 传统2.4GHz:深度拆解无人机图传射频模块的硬件差异

本文深度对比了大疆OcuSync与传统2.4GHz无人机图传射频模块的硬件差异,涵盖芯片组、天线系统、PCB设计、散热方案及生产测试等核心环节。重点解析OcuSync的全定制SoC芯片、智能MIMO天线阵列及精密PCB布局如何实现革命性性能提升,为无人机图传技术发展提供专业参考。

u5v6w7的博客 806

Windows 上 openclaw onboard --install-daemon 命令的安装位置和启动配置

摘要:Windows系统中,执行openclaw-cnonboard--install-daemon命令会创建计划任务OpenClawGateway,该任务在用户登录时自动运行位于%USERPROFILE%.openclaw\gateway.cmd的脚本文件来启动服务。管理方法包括通过任务计划程序或命令行(schtasks)查看/启停任务,使用openclaw gateway命令操作服务,或通过删除计划任务和脚本文件完全卸载服务。该机制确保OpenClawGateway服务随系统登录自动启动。(149字)

大坡3D软件开发 1369

数据库:Redis命令行帮助解释

下面是redis-cli命令行接口的帮助信息,该接口用于与Redis服务器进行交互。

梅见十柒的博客 1992

自然语言处理:长文本场景下的关键词抽取实践

自然语言处理:长文本场景下的关键词抽取实践

丨汀、的博客 2076

Python库之Scrapy-Redis的高级用法深度解析

Scrapy-Redis使用来过滤重复的请求。你可以通过继承类来自定义过滤逻辑。# 自定义请求指纹生成逻辑然后在Scrapy-Redis允许你自定义调度器,以适应不同的爬取策略。设置自定义调度器创建一个继承自的类,并实现所需的方法。在中指定自定义调度器Scrapy-Redis的高级用法为爬虫开发提供了极大的灵活性和扩展性。通过自定义DupeFilter、调度器、动态控制爬取、利用Redis数据结构、负载均衡以及监控与日志,你可以构建高效、稳定且易于维护的分布式爬虫系统。

shadowtalon的博客 1125

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Redis高级用法

缓存 + 分布式锁 + 分布式计数器 + 延迟队列 + 排行榜 + 限流器 + Session/Token 存储 + 消息系统 + 分布式协调组件

w2369110547的博客 352

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Redis高级用法大揭秘:从基础到实战

Redis高级用法摘要 Redis是一款高性能内存数据库,支持多种数据结构。文章介绍了Redis的高级应用场景和数据结构: 应用场景: 缓存:减轻数据库压力 消息队列:异步任务处理 分布式锁:保证数据一致性 计数器/排行榜:高效统计 高级数据结构: Bitmap:位操作,适合签到统计、用户在线状态等场景 HyperLogLog:基数统计,估算不重复元素数量,内存占用极低 其他高级结构还包括GEO、Stream等 这些高级功能使Redis在电商、社交、游戏等场景中能高效处理海量数据,提升系统性能。

u014326264的专栏 686

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【redis高级用法】

,对一个或多个 key 求逻辑或,并将结果保存到 destkey。

u014326264的专栏 822

Redis 高级用法

文章目录Redis 高级用法一 慢查询1.1 生命周期1.2 两个配置1.2.1 slowlog-max-len1.2.2 slowlog-max-len1.2.3 配置方法1.3 三个命令1.4 经验二 pipeline2.1 什么是pipeline(管道)2.2 客户端实现2.3 与原生操作对比2.4 使用建议三 发布订阅3.1 角色3.2 模型3.3 API3.4 发布订阅和消息队列四 Bitmap位图4.1 位图是什么4.2 相关命令4.3 独立用户统计4.5 总结五 HyperLogLog5.1

go|Python的个人博客 1136

Redis实践之高级用法:管道、消息队列、事务、分布式锁

管道(Pipeline)的使用使用方法创建一个批处理对象。将多个操作添加到批处理中,然后执行批处理以提高性能。发布-订阅模式(Pub/Sub)的实现使用方法获取订阅者对象。使用方法发布消息。使用方法订阅频道并处理接收到的消息。事务(Transaction)的应用使用方法创建一个事务对象。将多个操作添加到事务中,然后执行事务以确保原子性。分布式锁的实现使用方法尝试获取锁。在获取锁后执行关键操作,并使用方法释放锁。

m0_65664914的博客 1422

redis入门之高级用法

这篇文章接上篇redis入门基础教程,写写redis的稍稍高级一点的用法~~ 文章目录part 3:高级用法1、HyperLogLog(pfadd/pfcount)Redis HyperLogLog 命令2、订阅/消费Redis 发布订阅命令3、redis事务Redis 事务命令4、Redis 安全some err: part 3:高级用法 1、HyperLogLog(pfadd/pfcount) Redis HyperLogLog 是用来做基数统计的算法,优点是在输入元素的数量或者体积非常非常大时,计.

aogogo的博客 574

【Redis知识点总结】(七)——缓存雪崩、缓存穿透、缓存击穿、Redis高级用法

假设我们系统有1亿个用户,我们要统计在2024年1月28日当天这1亿个用户中有多少用户登录,我们可以用一个长度为1亿的bitmap,然后bitmap中每个bit对应一个用户当天的登录情况,登录了则置为1,否则该bit就是0,那么我们只要用一个bitcount命令就可以得到当天这1亿个用户的登录情况了。上面说到布隆过滤器是基于bitmap实现的,这个bitmap其实就是基于redis的string类型的,因为string会保存二进制字节数组,所以自然可以用它来实现bitmap的功能。

weixin_43889578的博客 856

Redis中的10种高级用法,直接起飞!

在很多小伙伴的印象中,Redis就是一个用来做缓存的工具。但如果你只把它当作缓存,那真是“杀鸡用牛刀”了。Redis的强大远不止于此,它的高级特性可以让你的系统在性能、扩展性、可靠性上直接起飞。今天这篇文章就跟大家聊聊Redis中10种高级用法,希望对你会有所帮助。布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否存在于一个集合中。极省内存:存储1亿个元素,只需要约100MB内存存在误判:判断“不在”一定准确;判断“在”可能误判(小概率)不可删除:不支持删除元素。

fuladulu的博客 262

Redis的高级用法

我们知道redis支持字符串、哈希、链表、集合、有序集合数据类型,Redis的安装和命令就不用介绍了,可以自己下载安装。这里我们介绍一些更深入一点的用法。 一 安全性 1.用ACL路由控制安全性。 2.给redis加上密码,默认是注释了的。 requirepass foobared 3. 服务器做SSL 4.禁用指定命令 5. 使用绑定IP,允许指定的IP访问 二 主从...

weixin_30352191的博客 201
上一篇: Tkinter和selenium结合实现登录UC后台,最后打包成exe
下一篇: bootstrap和JS相关
o王o
博客等级 码龄13年 32粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值