ジェディスはRedisを操作してCaptcha配信をシミュレートする
2022-01-15 03:50:46
ジェダイの誕生
1. 報告された場合、まずredisを起動する
すると、redisサーバーのサーバーサイドがまだオープンになっていません。
//Start the server
redis-server /etc/redis.conf
//Start the client
redis-cli
正常に起動すると、次のようになります。
2. mavenプロジェクトの作成
Jedis の依存関係をインポートする
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
</dependencies>
3. クラスを作成する
public class JedisDemo1 {
public static void main(String[] args) {
Jedis jedis = new Jedis("xx.xxx.xx.xx",6379);
//If redis is configured with a password, enter it here or the connection will fail
jedis.auth("xxxx");
String value = jedis.ping();
System.out.println(value);
}
}
初回接続の場合、高い確率でエラーが報告されます。
この時点で2つの方法があります最初のファイアウォールをオフにすることですが、これは非常に良いことではありません、実際には、ちょうどポート6379接続を開くには
jedisはモックCAPTCHAを実装しています。
public class PhoneCode {
public static void main(String[] args) {
verifyCode("12345678900");
// verify that the verification code is correct
// GetRedisCode("12345678900","940487");
}
// 1. Generate six-digit verification code
public static String getCode(){
Random random = new Random();
String Code = "";
for (int i = 0; i < 6; i++) {
int i1 = random.nextInt(10);
Code = Code +i1;
}
return Code;
}
/ / 2. Each phone can only send three times a day, verification code into the redis, set the expiration time
public static void verifyCode(String phone){
//connect redis
Jedis jedis = new Jedis("172.18.17.215",6379);
jedis.auth("1052600676");
// first customize the two keys, thus assigning a value to the key by the later steps
// Phone send number
String CountKey = phone+"count";
//authentication code key
String CodeKey = phone + "code";
//each phone can only send three times a day
//Check if there is value by key
String count = jedis.get(CountKey);
if (count == null){
//there is no send count, that means it is the first time to send, then set the send count to 1
jedis.setex(CountKey,24*60*60,"1");
}else if (Integer.parseInt(count) <= 2){
jedis.incr(CountKey);
}else if (Integer.parseInt(count) > 2){
System.out.println("Captcha more than three times, can not send ");
jedis.close();
return;
}
//set expiration time
//value
String codee = getCode();
jedis.setex(CodeKey,120,codee);
jedis.close();
}
/ / 3. verification code verification
public static void GetRedisCode(String phone,String code){
//connect redis
Jedis jedis = new Jedis("172.18.17.215",6379);
jedis.auth("1052600676");
//authentication code key
String CodeKey = phone + "code";
String RedisCode = jedis.get(CodeKey);
if (RedisCode.equals(code)){
System.out.println("success");
}else{
System.out.println("failed");
}
jedis.close();
}
}
Captcha送信は以下の動作で実現されます。
3倍以上
関連するデータ型テスト
キー
jedis.set("k1", "v1");
jedis.set("k2", "v2");
jedis.set("k3", "v3");
Set<String> keys = jedis.keys("*");
System.out.println(keys.size());
for (String key : keys) {
System.out.println(key);
}
System.out.println(jedis.exists("k1"));
System.out.println(jedis.ttl("k1"));
System.out.println(jedis.get("k1"));
文字列
jedis.mset("str1","v1","str2","v2","str3","v3");
System.out.println(jedis.mget("str1","str2","str3"));
リスト
List<String> list = jedis.lrange("mylist",0,-1);
for (String element : list) {
System.out.println(element);
}
セット
jedis.sadd("orders", "order01");
jedis.sadd("orders", "order02");
jedis.sadd("orders", "order03");
jedis.sadd("orders", "order04");
Set<String> smembers = jedis.smembers("orders");
for (String order : smembers) {
System.out.println(order);
}
jedis.smembers("orders", "order02");
ハッシュ
jedis.hset("hash1","userName","lisi");
System.out.println(jedis.hget("hash1","userName"));
Map<String,String> map = new HashMap<String,String>();
map.put("telphone","13810169999");
map.put("address","atguigu");
map.put("email","[email protected]");
jedis.hmset("hash2",map);
List<String> result = jedis.hmget("hash2","telphone","email");
for (String element : result) {
System.out.println(element);
}
zset
jedis.zadd("zset01", 100d, "z3");
jedis.zadd("zset01", 90d, "l4");
jedis.zadd("zset01", 80d, "w5");
jedis.zadd("zset01", 70d, "z6");
Set<String> zrange = jedis.zrange("zset01", 0, -1);
for (String e : zrange) {
System.out.println(e);
}
これは、キャプチャ送信をシミュレートするためにRedisのJedis操作に関するこの記事の終わりです、より関連するRedisのキャプチャ送信の内容は、スクリプトハウスの過去の記事を検索してくださいまたは、次の関連記事を閲覧を続けるには、今後、スクリプトハウスをよりサポートすることを願って!.
関連
-
CentOS 8.4へのRedis 6.2.6の詳細なインストール方法
-
Redisで緯度・経度座標データを簡単に扱う方法
-
SpringBootプロジェクトにおけるRedis。包括的なアプリケーション
-
redis クラスタの実装は同じプレフィックスを持つキーをクリーンアップします。
-
インタビューFAQです。Redisキャッシュとデータベース間のデータ整合性を確保する方法
-
redisを使ってnearly peopleの機能を実装する
-
redis分散ロック最適化の実装
-
Redisによる携帯電話認証コード配信の模倣例
-
Redisトランザクション処理の使用方法
-
Redisの文字列はどのように実装されているか
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Redisクラスタのマスターノードとスレーブノードを縮小する詳細チュートリアル
-
redis分散ロックについて解説(redis分散ロックの最適化処理とRedissonの利用について)
-
Redisによる分散ロック(setnx, getset, incr)の実装とタイムアウトの扱い方
-
SpringBootのRedis連携のアイデア解説
-
Redisによる分散シングルナンバーと分散ID(カスタムルール生成)
-
マイクロサービス領域におけるredisの貢献度を説明する
-
Redisシングルスレッディングの正しい理解
-
Redisの分散ロックについて簡単に説明します
-
インストール後、Redis-cliが動作しない(redis-cli: コマンドが見つからない)。
-
RedisTemplateでRedisを操作する、この記事で十分です(a)