国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Redis 如何限制短信發(fā)送
迷茫
迷茫 2017-04-27 09:03:05
0
6
1110

暫時(shí)不考慮 ip,什么的限制,只考慮 手機(jī)號(hào)限制,

如何用redis做到限制,一個(gè)手機(jī)號(hào),1分鐘內(nèi)最多發(fā)一條,一天內(nèi)最多10條

各位大神有什么好方案,先謝!(崇拜臉)

迷茫
迷茫

業(yè)精于勤,荒于嬉;行成于思,毀于隨。

répondre à tous(6)
漂亮男人

Nécessite deux caches

  1. nom de la clé, téléphone occupé, mis en cache pendant 1 minute

  2. nom clé phone-send-count, mis en cache pendant 1 jour, +1 pour chaque envoi réussi

Le processus lors de l'envoi est le suivant :

  1. Déterminez si le téléphone est occupé, s'il y a une erreur directe "envoyé trop vite".

  2. Déterminez s'il existe. S'il existe, continuez à vérifier s'il est égal à 10. S'il existe et est égal à 10, une erreur "Vous ne pouvez pas envoyer de messages texte aujourd'hui" sera affichée. signalé

  3. Envoyer des SMS

  4. écrire téléphone-occupé, valable 1 minute

  5. écrivez phone-send-count+1, l'horodatage de 23:59:59 le jour de validité - l'horodatage actuel

PHPzhong

Utilisez le numéro de téléphone portable + la minute et le numéro de téléphone portable + le jour comme clés pour limiter le nombre de SMS envoyés respectivement en une minute et un jour

我想大聲告訴你

Maximum un message par minute, saisi par minute et numéro de téléphone?:min:201701041750:13888888888
Maximum 10 messages par jour, saisi par date et numéro de téléphone?:day:20170104:13888888888

//php demo
 function check($phone){
    if($redis->exists('min:'.date('YmdHi').':'.$phone) || $redis->get('day:'.date('YmdHi').':'.$phone) > 10){
       reutrn false;
    }
    $redis->set('min:'.date('YmdHi').':'.$phone,1);
    $redis->incr('day:'.date('Ymd').':'.$phone);
    return true;
}
// 這樣按分鐘生成的key比較多,可以把手機(jī)號(hào)對(duì)應(yīng)的分鐘放`set`內(nèi)
伊謝爾倫

écrivez un morceau de pseudo code comme suit?:

String sendFrequencyKeyPrefix = "send_frequency_";
String dailySendLimitKeyPrefix = "daily_send_limit_";

public function sendMessage(String phoneNumber, String message){

    if(redis.get((sendFrequencyKeyPrefix + phoneNumber))) {
        return false;
    }
    int dailySendTotal = int(redis.get((dailySendLimitKeyPrefix + phoneNumber)));
    if(dailySendTotal >= 10) {
        return false;
    }
    // send message here
    redis.set((sendFrequencyKeyPrefix + $phoneNumber), "", 60);
    redis.set((dailySendLimitKeyPrefix + $phoneNumber), dailySendTotal + 1, 3600*24);
    return true;
}

Voici ce que cela signifie. Vous pouvez définir la limite d'envoi pour une minute ou un jour sous forme de fichier de configuration, qui est flexible et modifiable.

Révisé le 5 janvier

Mon ami @Lowky ici présent m'a rappelé une question, à savoir si la limite quotidienne est d'un jour ou de 24 heures, car ces deux concepts sont différents. L'essentiel ici est qu'il y a une limite de 10 articles par jour et que la limite est libérée t?t le matin chaque jour. Tu devrais arrêter d'y penser à chaque minute. Le code est modifié comme suit :

String sendFrequencyKeyPrefix = "send_frequency_";

public function sendMessage(String phoneNumber, String message){
    String dailySendLimitKeyPrefix = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
    if(redis.get((sendFrequencyKeyPrefix + phoneNumber))) {
        return false;
    }
    int dailySendTotal = int(redis.get((dailySendLimitKeyPrefix + phoneNumber)));
    if(dailySendTotal >= 10) {
        return false;
    }
    // send message here
    redis.set((sendFrequencyKeyPrefix + $phoneNumber), "", 60);
    redis.set((dailySendLimitKeyPrefix + $phoneNumber), dailySendTotal + 1, 3600*24);
    return true;
}
洪濤

La première question peut être réalisée en réglant le délai d'expiration. Tant que le numéro de téléphone portable existe dans Redis, cela signifie qu'il ne fait pas 1 minute.
La deuxième question est de changer le compteur à chaque fois. est envoyé et règle l'heure d'expiration du compteur sur un jour

.
左手右手慢動(dòng)作

Instructions simples?:

  1. Vous avez besoin de deux clés

  2. Une clé qui expire dans 1 minute

  3. Une clé qui expire dans 24h

Selon le business des SMS, le règlement se fait en fonction de la durée de validité et non à 0h.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal