在Linux上使用Redis cli使用Redis 2.10时,我遇到了一个关于口音的问题
如果我执行命令
设置“字符串”“a”
=>我得到“\xc3\xa0”
似乎每个转换的重音都以“\xc3”开头
如何取回原始字符串?您需要指定Redis的版本,更重要的是您正在使用的客户端
如果您使用的是telnet客户端。Redis支持值的任意字节,UTF-8根本不是问题(如果您的客户端正确地将输入的标志符号转换为关联的字节序列)。“\xc3\xa0”只是UTF-8编码中的Unicode“a”。只要解码字
标签: Redis
appharborbooksleeve
我正在尝试在appharbor上安装Redis。我已经按照他们的指示进行了操作,我再次遇到了Booksleeve API的问题。以下是我最初使用的代码:
var connectionUri = new Uri(url);
using (var redis = new RedisConnection(connectionUri.Host, connectionUri.Port, password: connectionUri.User
使用GUID或ulong键是否会影响Redis DB性能
类似:我可以想到GUI的两个问题:
它们不是顺序的
我不确定Redis,但是如果主键值是顺序的,许多数据库(SQL Server、MongoDB)可以更高效地索引
也许Redis与此类似
有其他GUID生成算法可以生成顺序GUID来解决此问题,例如
或SQL Server的
它们很大
键越长,存储索引所需的内存就越多。GUID为128位。在许多(大多数)数据库中,还可以使用64位或32位密钥。使用32位整数的GUID意味着您将使用4倍的
我使用INCR和EXPIRE来实施速率限制,例如每分钟5个请求:
if EXISTS counter
count = INCR counter
else
EXPIRE counter 60
count = INCR counter
if count > 5
print "Exceeded the limit"
但是,在最后一秒可以发送5个请求,在第二分钟的第一秒可以发送1个请求,在第二分钟的第一秒可以发送5个请求,即,在两秒钟
标签: Redis
celerycelery-task
我有一个装有sqlalchemy的烧瓶应用程序,还有一个芹菜工人正在运行。我使用redis作为我的经纪人。每次有人在对话中提交新邮件时,工作人员就会启动,并向所有参与对话的人发送通知邮件。因此,它连接到数据库并获取所有相关的电子邮件地址
不幸的是,似乎有一个随机因素决定芹菜是否知道发送邮件的任务。在一些启动后,它工作得很好(有时),在一些启动后,它根本不工作。当它不工作时,我得到的错误是:
[2012-11-28 21:42:58,751: ERROR/MainProcess] Received
我想为我的应用程序使用redis服务器,它有一个大型数据库。所以我想知道redis服务器可以存储多少大数据???它是否与大型数据库兼容?我听说redis是内存中的数据库redis是内存中的存储。因此,限制是盒子上的可用内存(如果您想共享数据,也可以是盒子上的可用内存)。Redis非常高效,因为它主要依赖于O(1)或O(logn)算法,但这是以内存消耗为代价的
如果你计划运行一个大的数据库,它可能不是一个好的选择。 < P> ReIIS不是一个大数据的数据库(30 +GB的数据),考虑使用SSBR
我正在尝试安装Redis 2.8,但当我运行make test时,它抛出了一个错误:
*[err]:在tests/unit/memefficiency.tcl预期条件“$efficiency>=
$expected_min_efficiency'为真(0.83004811885510699>=0.90)
这对我正在安装的服务器意味着什么?它曾经与Redis 2.6一起使用
谢谢 根据安提雷斯在邮件列表上的说法,这是一个假阳性。这是github的问题,谢谢。我也看到了。所以忽略是安全的?不确定。。
这是一个快速的问题,我找不到通用谷歌搜索或Stackoverflow搜索。如果您有一个主从Redis群集,并且RAM对于系统来说增长过大-并且您重新启动了机箱-数据会发生什么变化?数据正在保存到磁盘,但当盒子恢复时,它是否准备好被提取?如果启用了AOF或RDB,重新启动后,数据将再次在Redis中恢复。但是,在关闭Redis之前,不要忘记启动SAVE命令
我最近一直在关注Redis,它看起来几乎完美,因为我正在做一些主要需要基于键值的数据结构的事情
作为一个主要使用MySQL作为数据库的人,我已经习惯了将数据分组到表中,并且感到非常困惑,因为在阅读有关Redis的文章时,我没有提到表或任何其他分组数据的方法。这是否意味着Redis中没有表的概念
例如,如果我有一个简单的网站,其中用户可以在关系数据库中发布关于其他用户的评论,那么我可以有一个表“users”和一个表“comments”,如何使用Redis实现这一点
希望这足够清楚,提前感谢。是的,
标签: Redis
publishnode-redisredis-sentinel
是否可以指示Redis累积一组操作,然后发出“全部发布”命令来发布整个操作集(以线性顺序)
因此,您需要以某种方式设置一个标记(startpublish?),缓存将累积从该点接收到的所有操作(hdelhset)
最后,您将发出一个命令(publishall?),然后Redis将以接收到的线性顺序广播这些命令
重要提示:我需要通过Redis Sentinel客户端(packageRedis Sentinel Client)在Node.js中以编程方式执行set操作。您可以使用multi和execR
标签: Redis
stackexchange.redis
我是Redis新手,在StackExchange.RedisLibarary中使用Redis2.8。
如何编写一个KEYS模式来获取具有特定哈希成员值的所有键
当我使用StackExchange.Redis时,当username是key的成员时,我希望获得具有如下模式的密钥:Keys username:*AAA*
我将在HTTP用户请求时多次调用此方法,以查找存储在Redis数据库中的用户会话数据,您是否建议更好的替代解决方案 这根本不适合任何redis功能。你当然不应该用键来做这件事——除了价
我今天一直在用Redis做实验。我已经设法从Drupal存储了缓存的值,但我希望进一步研究并查看存储在cache\u my\u custom\u cache中的值
127.0.0.1:6379> keys *
1) "ff3169bd93659dc31322abc32835ef3e:cache_bootstrap:lookup_cache"
2) "ff3169bd93659dc31322abc32835ef3e:cache_bootstrap:module_implements"
3)
我需要在redis上对运行spring数据的spring云应用程序进行集成测试。
测试在本地使用常规redis服务器实例,我需要在由corporate CI engineering group控制的Jenkins CI服务器上运行此测试。
显然,我可以连接到那里的重做服务器,所以我使用了一个嵌入式redis服务器(从这里:)。
使用此redis服务器在本地运行测试效果很好,因为有一个测试配置文件可以插入嵌入式服务器而不是生产服务器。
现在的问题是,当我们在Jenkins环境中运行它时,我们看到的
我正在开发Signal应用程序。我的应用程序将有多个实例在负载平衡器后面的不同服务器上运行。我阅读了有关背板的内容,发现它主要用于服务器故障,并处理多台服务器之间的请求跳跃(可能还有另一个好处)
请考虑下面的场景,并建议我是否还需要背板。
我正在使用粘性负载平衡(即,来自客户端的所有后续请求都转到同一服务器)?因此,在好的场景中不可能出现请求跃点
我是如何处理服务器宕机场景的-当服务器宕机时。客户端尝试重新连接并出现“404未找到”错误。此时,客户端启动新连接并正常工作。在开发信号器应用程序时使
我正在尝试在大型redis车队中使用sentinel进行故障切换(12个sentinel,500多个碎片,每个碎片由一个主设备和一个从设备组成)。我遇到了一个非常奇怪的问题,我的哨兵反复向某些redis节点发出command+fix slave配置。我并没有注意到这种情况在小范围内发生,因为这是值得的
我注意到两个具体问题:
+修复从属配置消息,如上所述
sentinel.conf显示某些奴隶有两个主人(他们应该只有一个主人)
处于起始状态的震源组有一个从节点XXX.XXX.XXX.177和一个
运行
save
返回
(error) ERR
/var/log/redis/redis-server.log为空
bgsave
返回
Background saving started
但是
显示旧日期(我想是安装日期)
在哪里可以找到有关这些错误的更多详细信息?1如果不是root用户,请检查当前用户是否具有对rdb目录的写入权限
2修改redis.conf,将日志文件设置为“”,在控制台上强制日志。(daemonize应该是no)。1如果不是root用户,请检查当前用户是否具有对rdb
标签: Redis
benchmarkingtwemproxy
我正在尝试用Redis和Twemproxy测试一个非常简单的设置,但我找不到一种方法使它更快
我有2台redis服务器,我以最低配置运行:
./redis-server --port 6370
./redis-server --port 6371
这两个都是从源代码编译的,并在一台具有所有适当内存和CPU的机器下运行
如果我在其中一个实例中运行redis基准测试,我会得到以下结果:
./redis-benchmark --csv -q -p 6371 -t set,get,incr,lpush
我目前正在使用redis server的一个实例运行redis。我的应用程序大约有10%是写的,其余是读的。我对redis有点陌生,但是IIUC,redis的单线程特性意味着每个请求都是串行处理的,因此,例如Read#1将在Read#2之前进行完整处理,等等。这似乎为性能方面的改进留下了空间,因为读取将在内存延迟上阻塞很长时间,而它们可以并行执行
redis对此有解决方案吗?有没有办法通过并行处理读取请求来实现更高的容量?您可以创建只读从属(复制)来卸载读取。因此,每个请求都可以路由到不同的实例
标签: Redis
systemsoftware-design
我正在准备一个系统设计面试,面试中会有人问我这样的问题,所以我想展示一下我的设计过程。此外,我想知道有哪些最佳做法可以解决过程中的一些困难。我想考虑一下可伸缩性,以及如何处理数据库上的大量读写操作。如果我有什么想法错了,请纠正我
首先,我想构建一个函数subscribe/unsubscribe。对于用户,我想设计读/未读标记提要。我如何设计这样的系统?乍一看,我能看到的第一个问题是,如果我把所有数据都放在数据库中,一旦成千上万的用户订阅/取消订阅某个来源或媒体来源(如CNN帖子),每5-10分钟
我正在设置REDIS复制。(1名主人-3名奴隶和1名哨兵)
我像这样编辑了Master的配置
从属优先级10(另一个redis设置为100-默认)
然后我杀了主人,另一个奴隶被提升为主人。
再次启动前一个主控器后,我杀死了当前主控器。
(我原以为前一位大师会被提示成为大师。
因为该服务器的从属优先级低于其他任何服务器……)
但是另一个奴隶被提示成为主人,而不是原来的主人。。
(原件的主从优先级设置已自动更改为默认值“100”)
你知道为什么会发生这种情况吗
谢谢。我认为这是个好答案。
我对redis.conf进行了更改,但没有看到应用于正在运行的实例的更改。我是否需要重新启动redis以获取更改 是的,您必须重新启动服务器才能从redis.conf文件中获得更改。或者,您可以在运行时使用config set命令执行此操作
在以下链接上阅读更多关于它们的信息
标签: Redis
stackexchange.redis
我已经在我的应用程序中实现了StackExchange.Redis,总体来说它运行得很好。但是,我们随机得到以下错误
StackExchange.Redis.RedisServerException: MISCONF Redis is configured to save RDB snapshots,
but is currently not able to persist on disk. Commands that may modify the data set are
disabled
因为我想在redis中使用事务。我阅读了redis交易的文档,发现如下
WATCH mykey
val = GET mykey
val = val + 1
MULTI
SET mykey $val
EXEC
但我的问题是,如果redis事务是按顺序和原子方式执行的,那么我们就不能用下面的语句实现上述相同的行为吗
MULTI
val = GET mykey
val = val + 1
SET mykey $val
EXEC
谢谢,不,你无法做到这一点
使用MULTI和EXEC,您可以在服务器端
尝试使用Redis模拟重载场景(仅限默认配置)。
为了保持简单,当发出multi时,立即执行,然后关闭连接
import io.vertx.core.*;
import io.vertx.core.json.Json;
import io.vertx.redis.RedisClient;
import io.vertx.redis.RedisOptions;
import io.vertx.redis.RedisTransaction;
class MyVerticl
我有一张如下表:
sec_name date1 date2 date3
IBM 10 11 12
GOO 11 8 7
AWS 7 14 12
ALI 12 6 6
我想将它们存储到redis中,并支持通过Secu名称列表和日期列表获取数据的查询,例如[IBM,AWS]&[date1,date3]
在redis中存储有更好的数据结构吗?
假设有10000*10000个数据
使用以下方法可以很好地工作:
redis\u client.setex(key,expiration\u in\u sec,value\u json)
现在它突然又回来了:
值不是整数或超出范围问题在于不同的redis客户端之间
使用StricRedis时,setex语法为:
setex密钥、到期日、值
使用Redis客户端时,setex语法为:
setex键、值、到期日
我们的具体问题是有人更改了redis客户端。解决方案也可以在这里找到:
标签: Redis
event-listenerjedis
我们已经实现了Jedis.expire事件,并且倾向于使用KeyExpiredListener类的onPMessage方法
KeyExpiredListener extends JedisPubSub {
......
public void onPMessage(String pattern, String channel, String message) {....}
....
}
它工作得很好
当我们在Redis cli中设置.notify事件时
redis-cli confi
假设我有两个数据中心,每个中心运行一个redis实例。此外,我有三个sentinel实例在这两个数据中心运行,每个都在一台单独的机器上,但其中两个在同一个数据中心
这是个问题吗
在最坏的情况下,如果数据中心的第一个实例不可用,三个sentinel实例中的两个+一个redis实例将同时关闭。如果此redis实例是主实例,则会故障切换到另一个数据中心
但如果数据中心1再次可用,会发生什么?我猜这将是新的配置:
Data center 1 - Sentinel 1 -> Points to ma
最近,我在redis中使用setbit时遇到了一个问题。当我使用redis作为存储的bloomFilter部件时,2亿数据需要380MB内存才能保证99.99%的准确率。我每天都需要删除bloomfilter的redis密钥并创建一个新密钥,但发现日志速度慢,这可能会影响产品环境中的其他服务。有谁能给我一个更好的建议来禁止这种行为吗?thx很多~
根据指挥成本(ms):
释放大量内存(即380MB)需要花费太多时间,并且会阻塞Redis
为了避免这种情况,您可以将Redis升级到4.0版,并使用
你知道为什么会这样吗
localhost:0>scan 0 MATCH 20180223:c5*
1) "6553600"
2)
localhost:0>scan 6553600 MATCH 20180223:c5*
1) "655360"
2) 1) "20180223:c5192875:o4998561"
2) "20180223:c1354879:o1160565"
3) "20180223:c1008709:o814395"
4)
有没有可能(或者有另一种惯用的方式)用现有的最高分数加上1的分数来添加一个成员
例如:
> FLUSHDB
> ZADD key 1 one
> ZADD key * mem
> ZSCORE key mem
1) "2"
您可以使用zrevrange获得最大分数,然后调用zadd将分数设置为最大+1。没有内置的方法可以做到这一点。但是,您可以编写一个用于执行此任务的:
local key = KEYS[1]
local field = ARGV[1]
local sc
从许多博客中,我了解到redis命令keys*可能会阻塞redis服务器,其他命令无法按时执行
然而,今天我在我的数据库上运行键*,它有大约800万数据。
然后,我使用我的另一个客户端执行其他命令,如get或set,这些都很好地工作,并及时给出响应
所以,我不明白为什么我的命令键不阻塞
图片是键(以及几乎任何其他Redis命令)是阻塞,不要上当:)
当Redis扫描其内部字典并组装响应时,它被阻止。但是,在响应就绪并移动到网络层后,服务器可以自由处理下一个操作。与此同时,您的客户端从发送密钥到收
有文献记载,单独的redis实例映射到单独的CPU核心。如果我有8个redis实例在Debian/Ubuntu机器上运行,并且有8个内核,那么每个都会映射到一个内核
1)如果我将这台机器缩小到4核,会发生什么
2)更改是自动发生的(默认情况下),还是涉及一些显式配置
3)有没有办法控制这种行为?如果是,程度如何
我很想了解这背后的技术,最欢迎举一个说明性的例子。我在云端运行一个应用程序,它使用redis作为后端。放大(或缩小)机器的CPU核心是我必须做的事情之一,但我想知道我首先要做的是什么
提
标签: Redis
message-queuestackexchange.redisazure-redis-cachemessage-bus
我们正在使用redis消息总线并使用通道处理消息。但是,如果我们的应用程序部署在多个实例中,那么请求和响应将传递给所有实例。为了避免这种情况,下面哪种方法更好
为应用程序的每个实例创建一个通道
为每个用户创建一个频道
任何建议都将受到高度赞赏这里的限制因素是同一频道的订户数量。通道的数量可以很大。因此,您可以相应地选择粒度。请在此处阅读更多信息:
以前提出过类似的问题:
All the complexity on the end is on the PUBLISH command, that
我最近在一次采访中被问到这个系统设计问题:
让我们假设一个应用程序允许用户共享来自第三方的文章
派对网站及其连接。假设所有共享操作都进行了
通过应用程序站点上的公共代码路径(由多个服务器提供服务
在地理上不同的地方)。设计一个系统,在
近实时,过去五分钟内N篇共享最多的文章,
最后一小时和最后一天。假设唯一共享文章的数量
每天在1米到10米之间
因此,我提出了以下组件:
处理共享事件的现有服务层
聚合服务
数据存储
将共享事件通知发送到聚合服务的某些传输机制
现在我开始讨论处理共享事件的现有
我已经在寻找这个问题的适当解决办法。
问题是浮点(IEEE 754)。
这个问题对我来说并不新鲜。。。在java中我使用BigDecimal,在JS中我使用bignumber.JS
不幸的是,我在Redis中找不到合适的解决方案。这似乎是最基本的东西,需要支持,所以我肯定我错过了一些东西
例如:
>set key 100000
>incrbyfloat key -0.0002
预期值:99999.9998
实际值:99999.9998000000005
我想在lua中实现我自己的
标签: Redis
stackexchange.redisspring-data-redis
使用Spring data redis@indexed,我可以在redis中设置索引
就像这样定义我的领域
@RedisHash("customer")
public class Customer extends Serializble{
@Id
Private String CustomerId;
@Indexed
Private String CustmerName;
…
}
我正在努力实现C#StackExchange.Redis
我现有的Java应用程序(在Liberty上运行)定义了许多缓存。
某些缓存(哈希键/值)的大小可能为几GB
我正在考虑用集群实现Redis,我的问题是
将现有缓存映射到Redis哈希是否有意义?
从我读到的内容来看,Redis可以通过在不同的磁盘上放置不同的散列来进行分区
服务器,但它不会对散列项进行分区,对吗
e、 而不是这个
HSET cache1 cacheid1“缓存值”
HSET cache1 cacheid2“缓存值”
HSET cache2 cacheid3“缓存值”
我应该用这
我使用sentinel配置了两个从机和一个主机。
我已经关闭了所有服务器上的持久性。现在,使用BGSAVE命令在主设备和从设备之间进行同步。
因此,我是否应该假设,尽管我已禁用了持久性,但redis仍然在持久化,因为它创建了用于同步数据的rdb文件?我猜您必须使用复制无盘来避免redis使用BGSAVE。事实上,无盘复制使用套接字而不是文件在从属服务器上发送数据
关于,
我对它的内部工作方式很少有疑问:
1.)Redis cluster执行基于哈希槽的统一分区。如果我们创建一个通道,比如说C1和它在node1中创建的通道,那么我们在通道中推送的任何内容都将始终存储在redis集群node1中的C1中。我的理解正确吗?
2.)如果单个通道中的消息总大小超过了节点容量,那么它会将通道中的元素分割到redis集群中的多个节点吗?Pub/Sub与键空间无关,因此集群分区不适用于它
警告1:集群中的Pub/Sub是一个完整的网格,因此任何获得PUBLISH的节点都会在集群
标签: Redis
stackexchange.redisdefault-database
我有3个应用程序指向一个redis端点。我希望每个应用程序使用单独的redis数据库。但当我试图在ConfigurationOption中将defaultDatabase设置为1或2时,它仍在使用数据库0。我正在使用stackexchange redis。代码如下所示:
var configurationOptions = new ConfigurationOptions
{
EndPoints = { "myredis.redis.cache.win
标签: Redis
symfony4symfony-messenger
我有一个Symfony 4应用程序,它使用组件(版本4.3.2)来发送消息。
对于异步消息处理,配置了一些Redis传输,它们工作正常。但后来我决定,当消息处理失败时,其中一个应该重试几次。我配置了a,传输实际上在失败时开始重试,但它似乎忽略了延迟配置(键delay,multiplier,max_delay),并且所有重试尝试总是在没有任何延迟的情况下进行,都在一秒钟内或类似的短时间内进行,这在这个用例中是不受欢迎的
我的Messenger配置(config/packages/Messenger
我有一张mongoDB桌供emp这样的人使用
empid:String;
name:String;
phone:String;
Address:String;
我正在考虑将其存储在redis缓存中,使用empid作为键,rest作为值,如果这样的话,那么如何使用子字符串搜索具有部分姓名/电话/地址的员工?您能举个例子吗。不清楚你想如何搜索。。。你想根据姓名、电话等进行搜索吗?你是否检查了Redis模块RedSearch()@VikramRawat:假设我有一个条目,其中键为empId:123和
我有一个疑问,假设我们使用的是aof,fsync策略为否。这意味着操作系统将根据自己的设置在文件描述符上进行fsync。
现在,对于复制,它维护一个内存缓冲区,然后根据从机上次同步的偏移量,从机执行PSYNC。
由于redis在接收时将所有事件流式传输到从机,因此可能redis成功地将1个查询流式传输到从机,然后box失败(因此fd中的所有OS缓冲区也会丢失)。在选择从属设备作为新主设备之前出现主设备。所以主服务器将重播aof文件中的所有内容,aof文件的事件较少,而从服务器的事件较多。redi
现在我连接到redis,找到一些如下键:
> keys "user:login:user:*"
user:login:user:62668
user:login:user:61970
user:login:user:63586
......
现在我想删除此密钥,我已尝试:
keys "user:login:user:*" | xargs del
keys "user:login:user:*" | del
keys &qu
我读过这篇关于redis分区的文章()
我发现redis提供了两种分区方法选项,范围分区和散列分区
对我来说,在各个方面,范围分区似乎都不如哈希分区好
我认为范围分区有一些优点,但我不知道它们是什么
请给我一些想法。Redis不提供范围分区
Redis提供哈希分区,但仅在集群模式下提供
你提到的这篇文章只是给出了用户如何使用不同的分区方案(不仅是范围分区,还包括其他分区)来分发数据的基本概念。@pjs我正在考虑按英文单词的第一个字母对数据进行分区。所以英语单词的分布很重要。但重新考虑一下我的问题
我已经将Redis 6.2.1的Docker映像部署到Openshift。它被配置为接受来自另一个Openshift项目的连接。保护模式已打开,并且我已在redis.conf中正确配置了用户。另一个项目使用Wordpress和Redis对象缓存插件。还有一些PHP测试脚本。当Redis配置如下时,它们可以连接到Redis:
Protected-mode yes
user benfa allcommands allkeys on >'password'
user tester allcomm
我有一个以id令牌作为键值的表。有时我需要通过令牌获取id(当用户登录时)
我怎么能做到
我可以创建一个单独的表(名称空间),以令牌作为键,id作为数据,但这似乎不是一个好方法。
我听说二级索引是一种解决方案,但我不知道如何创建二级索引以及所讨论的方法之间的区别。
我应该使用哪一个来完成任务
我可以创建一个单独的表,其中令牌作为键,id作为数据
这是一种创建二级索引的方法。在大多数情况下,这是一个更好的解决方案。因为这样你就不需要任何其他依赖了。此外,您可以完全控制索引(数据)。您可以使用页面中
现在,我使用以下代码在spring boot中增加一个值:
String loginFailedKey = "admin-login-failed:" + request.getPhone();
Object loginFailedCount = loginFailedTemplate.opsForValue().get(loginFailedKey);
if (loginFailedCount != null && Inte
现在我想使用redis实现一个发布/订阅系统,我的系统中有1000多个rss频道。还有一个由Python3编写的粗糙的rss频道更新应用程序。10000多名用户可以订阅他们喜欢的频道
拿到文章时,在剪贴端,我只想把文章发送到redis的频道,现在我在redis中存储用户订阅的文章列表,如下所示:
cruise:user:1234:subscrible 1,2,3(article id list data structure.....)
现在我想在向频道发送文章时,文章id将自动推送到用
1 2 3 4 5 6 ...
下一页 最后一页 共 108 页