小编Ram*_*Ram的帖子

Redis PFADD用于检查存在的查询

我需要处理队列中的多个记录.但是由于一些外部问题,这些物品可能会偶尔发生多次.我只需要处理一次项目

我计划使用的是PFADD到每个记录的redis(作为md5sum),然后看看是否返回成功.如果没有显示增量,则记录是重复的其他处理记录.

这看起来非常简单,但在使用PFADD时我得到的误报太多了

有一个更好的方法吗 ?

redis

7
推荐指数
1
解决办法
826
查看次数

golang net/smtp获取smtp服务器响应DSN

我使用golang net/smtp发送邮件

每当我发送到我的smtp服务器时,我都需要从服务器捕获响应,尤其是DSN

例如,我的本地smtp服务器在邮件末尾给出了"ok quued as"

我需要捕获它并在日志中打印

我怎样才能做到这一点

package main

import (
    "log"
    "net/smtp"
)

func sendEmail(msg []byte) {
    c, err := smtp.Dial("localhost:25")
    if err != nil {
        log.Fatal(err)
    }
    if err := c.Mail("sender@example.org"); err != nil {
        log.Fatal(err)
    }

    if err := c.Rcpt("recipient@example.net"); err != nil {
        log.Fatal(err)
    }
    wc, err := c.Data()
    if err != nil {
        log.Fatal(err)
    }

    _, err = wc.Write(msg)
    if err != nil {
        log.Fatal(err)
    }

    //How do I get the response here ?? …
Run Code Online (Sandbox Code Playgroud)

email smtp go

6
推荐指数
1
解决办法
348
查看次数

mod_perl跨子进程共享变量

我有一个mod_perl系统接受来自不同客户端系统的API调用假设在子perl程序中我有这样的调用,它做了一些繁重的处理

$conf{$client_id} = generate_client_conf($client_id); # returns a ref to a hash
Run Code Online (Sandbox Code Playgroud)

我想在其他子进程中重用这个变量$ conf {$ client_id}我该怎么做?

变量无法在startup.pl中加载,但需要在生成后进行缓存

perl mod-perl

5
推荐指数
1
解决办法
372
查看次数

与系统调用C程序相比,perl删除非ascii字符太慢

我有用于除去非ASCII字符和^ M一个perl代码但对于一个文件1.5GB这需要14分钟(在Linux 64位,16GB RAM,LANG = C组)

我只是在C中重写了相同的逻辑,现在在perl中进行系统调用这只需要36s(相同的机器,相同的文件)

为什么这个perl代码很慢(我试图复制项目的一小部分).与下面的C程序相比,它需要30倍的时间

PERL

my $newfile = $ARGV[0] . ".cleaned";
open(IN,$ARGV[0]) || die "Could not open file $ARGV[0] $!";
open(OUT,">$newfile");
while(defined($c = getc(IN))){
    next if((($i =ord($c)) > 126)  || ($i == 13  ));
    print OUT $c;
}
close IN;
rename($newfile,$ARGV[0]);
Run Code Online (Sandbox Code Playgroud)

C

#include <stdio.h>
int main(int argc, char **argv){
  char tmpfile[200];
  FILE *fin,*fout;
  int c;
  snprintf(tmpfile,180,"%s.cleaned",argv[1]);
  fin = fopen(argv[1], "rb");
  fout = fopen(tmpfile, "w");
  while ((c = fgetc(fin)) != EOF) {
    if (c==13 || c > …
Run Code Online (Sandbox Code Playgroud)

c perl ascii

5
推荐指数
1
解决办法
178
查看次数

使用Redis或Aerospike计算独特的访客

我试图为每个页面或其他事件(如点击等)计算不同客户端的独特访问者.我打算做的是为GUID分配一个唯一的基于cookie的GUID,然后为每个事件调用SADD.redis键将是SET_ [EVENTID]

如果我只想要用户数量,我可能会使用PFADD,但我的应用程序还需要知道谁是唯一用户

但问题是如果有太多的EVENT或太多的用户,那么SADD将在内存中结束大量的用户ID我们期望每小时1000k +用户事件,所有客户端,事件数量也将超过100+

我想要一个意见是redis正确的存储选择.由于请求数量庞大,任何传统的RDBMS方法都不起作用

我不确定是否有任何其他存储可以帮助像Aerospike

redis aerospike

4
推荐指数
1
解决办法
1034
查看次数

在expect脚本中转义连字符和引号

您好,我正在使用 expect 来自动执行登录任务。但是,如果密码以连字符开头,脚本将失败我该如何转义

我在正确转义 '" 或其他字符时遇到了很多麻烦 有没有办法可以对所有字符进行编码并发送期望编码的字符串,以便在发送之前对其进行解码

这是我的脚本

#!/usr/bin/expect -f
spawn ssh -o "PubkeyAuthentication no" -l user 10.10.10.10
expect "password: "
send "-cpass\'ok\r"
expect "$ "
Run Code Online (Sandbox Code Playgroud)

linux expect

4
推荐指数
1
解决办法
2369
查看次数

perl base64 使用 url 安全字符编码

在 perl 脚本中,我使用 base64 对字符串进行编码,但我希望输出是 URL 安全的 Base64 包括像 / 或 + 这样的字符,它们在 URL 中被转换

我怎样才能避免这种情况?

perl base64

3
推荐指数
1
解决办法
1954
查看次数

如何使用连接池到aerospike服务器

我想使用golang连接到aerospike服务器

我无法获得任何提供此类选项的库.Redis等的默认golang库具有明确的池示例.不确定为什么他们因为空中加速器而失踪

go aerospike

3
推荐指数
1
解决办法
149
查看次数

redis HLL 误报太多

Hyperlog 日志是一种概率算法根据 redis HLL 文档,我们可能会得到 0.81% 的错误,但我会得到 17-20% 的错误

我认为有问题.. 这是我的简单 perl 测试脚本。是否有错误

#!/usr/bin/perl -w                                                                                                                                                       
use Redis;
my $redis = Redis->new(server=>'192.168.50.166:6379') or die;
my $fp=0;
my $HLL="HLL";

$redis->del($HLL);
foreach my $i (1..10000) {
  my $s1 = $redis->pfadd($HLL,$i);
  if($s1 == 0){ 
    print "False positive on $i\n";
    $fp++;
  }
}
print "count of false positives $fp\n";
Run Code Online (Sandbox Code Playgroud)

perl redis hyperloglog

1
推荐指数
1
解决办法
670
查看次数

池连接每次连接?

我想在go中编写一个简单的http服务器,接受一个查询字符串并将其推送到redis.我使用redigo模块进行redis连接,使用fasthttp进行http服务器.

在代码中(下面).我正在尝试使用redis池,以便重用连接.当我尝试使用ab进行基准测试时

ab -n 10000 -c 100 -k -r http://127.0.0.1:9080/?a=b
Run Code Online (Sandbox Code Playgroud)

我看到将近6000个redis连接被打开.我可以看到使用netstat

连接池不起作用吗?如何减少与redis的连接?

package main

import (
    "fmt"
    "time"
    "github.com/garyburd/redigo/redis"
    "github.com/valyala/fasthttp"
)

var Pool *redis.Pool
var err error

func init() {
    Pool = newPool("127.0.0.1:6379")
    _, err = Pool.Dial()
    if err != nil {
        fmt.Println(err)
    }
}

func newPool(server string) *redis.Pool {

    return &redis.Pool{
        MaxIdle:     3,
        IdleTimeout: 240 * time.Second,
        Dial: func() (redis.Conn, error) {
            c, err := redis.Dial("tcp", server)
            if err != nil {
                return nil, err
            }
            return c, err …
Run Code Online (Sandbox Code Playgroud)

http go redis

1
推荐指数
1
解决办法
659
查看次数

标签 统计

perl ×4

redis ×4

go ×3

aerospike ×2

ascii ×1

base64 ×1

c ×1

email ×1

expect ×1

http ×1

hyperloglog ×1

linux ×1

mod-perl ×1

smtp ×1