1. บทนำ
Redis เป็นโอเพนซอร์ส (BSD ที่ได้รับใบอนุญาต) ระบบจัดเก็บคีย์-ค่าความทรงจำในหน่วยความจำซึ่งสามารถใช้เป็นฐานข้อมูลแคชและมิดเดิลแวร์ข้อความ
2. การดำเนินการบนคีย์
ก่อนอื่นคุณต้องสร้างการเชื่อมต่อ Jedis Jedis = New Jedis ("127.0.0.1", 6379) และจากนั้นคุณสามารถใช้งานสตริง, Set, ZSET และ Hash
// ทดสอบเกี่ยวกับ Key Public Void Keytest () {system.out.println (jedis.flushdb ()); // ล้างข้อมูลระบบ. out.println (jedis.echo ("hello")); // พิมพ์ hellosystem.out.println (jedis.exists ("foo"); "ค่า 1"); jedis.set ("key2", "value2"); System.out.println (jedis.exists ("key1")); // ตัดสินว่าคีย์มีอยู่กับ String randomkey = jedis.randomkey (); // เลือก keysystem.out.out.println ("ชื่อของ Keykey คือ" System.out.println (jedis.pttl ("key1")); // เวลาการอยู่รอดที่เหลืออยู่ // ลบเวลาหมดอายุคีย์ jedis.persist ("key1"); // รับประเภทของคีย์ "สตริง", "รายการ", "set" ") คีย์ // ส่งออกค่าของคีย์สตริงค่า = jedis.get ("key1"); system.out.println (ค่า); // เปลี่ยนชื่อคีย์ jedis.renamenx ("key1", "keytest"); system.out.println ("key1"); คีย์ * จับคู่คีย์ทั้งหมดในฐานข้อมูล // keys h? llo จับคู่สวัสดี, hallo และ hxllo, ฯลฯ // keys h*llo จับคู่ hllo และ heeeeeeello ฯลฯ // keys h [ae] llo จับคู่ Hello และ Hallo แต่ไม่ใช่ Hillo // สัญลักษณ์พิเศษถูกคั่นด้วย / ตั้งค่า <string> set = jedis.keys ("k*"); // รับคีย์คีย์ที่เกี่ยวข้องทั้งหมดวิธีการ System.out.println (Set); jedis.del ("key1"); // ลบ method method ของคีย์.3. ประเภทข้อมูลสตริง
ตั้งค่า Mystr "Hello World!" // ตั้งค่าประเภทสตริงรับ mystr // อ่านประเภทสตริงเพื่อดำเนินการตัวเลขบนสตริง 127.0.0.1:6379> ตั้งค่า mynum "2" OK127.0.0.1: 6379> รับ mynum "2" 127.0.0.1:6379> incynum
รหัสการทำงานของ Java คือ:
// ทดสอบเกี่ยวกับการดำเนินการสตริงโมฆะสาธารณะ Stringtest () {jedis.set ("สวัสดี", "hello"); // setSystem.out.println (jedis.get ("hello")); // get // ใช้ภาคผนวกเพื่อเพิ่ม jedis.append ("hello", "World"); jedis.set ("สวัสดี", "123"); System.out.println (jedis.get ("hello")); // ตั้งเวลาหมดอายุ jedis.setex ("hello2", 2, "world2"); system.out.println (jedis.get ("hello2"); ลอง {thread.sleep (3000); {e.printstacktrace ();} system.out.println (jedis.get ("hello2")); // เพิ่มคู่คีย์-ค่าหลายคู่ในครั้งเดียว jedis.mset ("a", "1", "b", "2"); การลบชุดของ jedis.del ("a", "b"); system.out.println (jedis.exists ("a")); system.out.println (jedis.exists ("b"));};4. รายการประเภทข้อมูล
รายการใน Redis ไม่ใช่อาร์เรย์ในการใช้งานพื้นฐาน แต่รายการที่เชื่อมโยง
ชุดการดำเนินงาน: RPUSH, LPUSH, LLEN, LRANGE, LPOP และ RPOP
เราสามารถใช้ LPUSH เพื่อแทรกองค์ประกอบใหม่ทางด้านซ้ายของรายการใช้ RPUSH เพื่อแทรกองค์ประกอบใหม่ทางด้านขวาของรายการและใช้คำสั่ง LRANGE เพื่อระบุช่วงจากรายการไปจนถึงองค์ประกอบแยก
// สร้างรายการใหม่ที่เรียกว่า mylist และแทรกองค์ประกอบ "1" 127.0.0.1:6379> lpush mylist "1" // ส่งคืนจำนวนองค์ประกอบในปัจจุบัน mylist (integer) 1 // องค์ประกอบแทรก "2" 127.0.0.1:6379 "0" 127.0.0.1:6379> lpush mylist "0" (จำนวนเต็ม) 3 // รายการรายการจากหมายเลข 0 ถึงหมายเลข 1 ใน Mylist 127.0.0.1:6379> LRANGE MYLIST 0 11) "0" 2) "1" // รายการองค์ประกอบแรก "0" 2) "1" 3) "2"
รหัสการทำงานของ Java คือ:
public void listtest () {string key = "mylist"; jedis.del (key); // ลบหนึ่งก่อนหน้า // เพิ่มองค์ประกอบลงในคิว jedis.rpush (คีย์, "aaaa"); jedis.rpush (key, "bbbb"); jedis.rpush "cccc"); // ปริมาณความยาวของปริมาณ. out.println ("Lenth:" + jedis.llen (key)); // พิมพ์คิวเริ่มต้นจากดัชนี 0 ไปยังระบบแรก (องค์ประกอบทั้งหมด) System.out.println ("องค์ประกอบทั้งหมด:" jedis.lindex (คีย์, 1)); // ตั้งค่าขององค์ประกอบในคิวและข้อผิดพลาดจะถูกส่งคืนเมื่อดัชนีเกินช่วง jedis.lset (คีย์, 1, "aa22"); system.out.println ("ดัชนี 1:" + jedis.lindex (คีย์, 1)); // enqueue องค์ประกอบจากด้านขวาของคิว jedis.rpush (คีย์ "-2", "-1"); "-1"); // enqueue องค์ประกอบจากด้านซ้ายของคิว jedis.rpush (คีย์ "องค์ประกอบที่สอง", "องค์ประกอบแรก"); // วินาทีแรก // องค์ประกอบจากนั้น // elementf แรกเข้าสู่ระบบคิว. System.out.println (jedis.rpop (คีย์)); // dequeues องค์ประกอบจากด้านซ้ายของคิว System.out.println (jedis.lpop (คีย์)); System.out.println ("องค์ประกอบทั้งหมด:" + jedis.lrange (คีย์, 0, -1)); // count> 0: ลบองค์ประกอบที่มีค่าตั้งแต่ต้นจนจบและนับเป็นจำนวนของการลบ // count <0: ลบองค์ประกอบที่มีค่าออกจากปลายถึงหัวและจำนวนคือจำนวนของการลบ // count = 0: ลบองค์ประกอบทั้งหมดด้วยค่า jedis.lrem (คีย์, 1, "cccc"); system.out.println ("องค์ประกอบทั้งหมด:" + jedis.lrange (คีย์, 0, -1)); // นั่นคือองค์ประกอบด้านขวาสุดจะรวมอยู่ด้วย หากการเริ่มต้นมีขนาดใหญ่กว่าตัวห้อยหางของรายการรายการว่างจะถูกส่งคืน // หากการหยุดมีขนาดใหญ่กว่าหางจริงของรายการ Redis จะถือว่าเป็นตัวห้อยขององค์ประกอบสุดท้าย System.out.println (jedis.lrange (คีย์, 0, 2)); system.out.println ("องค์ประกอบทั้งหมด:" + jedis.lrange (กุญแจ, 0, -1)); // ลบองค์ประกอบนอกระบบช่วงเวลา. jedis.lrange (คีย์, 0, -1));}5. ตั้งค่าประเภท
ชุดของ Redis เป็นชุดที่ไม่ได้เรียงลำดับและองค์ประกอบในชุดไม่มีคำสั่ง
ชุดการดำเนินงาน: Sadd, Srem, Sismember, Smembers และ Sunion
การดำเนินการที่เกี่ยวข้องกับการตั้งค่านั้นอุดมไปด้วยเช่นการเพิ่มองค์ประกอบใหม่การลบองค์ประกอบที่มีอยู่การแยกการแยกการรวมกันรับชุดที่แตกต่าง ฯลฯ
// เพิ่มองค์ประกอบใหม่ลงในคอลเลกชัน myset "One" 127.0.0.1:6379> myset "หนึ่ง" (จำนวนเต็ม) 1127.0.0.1:6379> myset "สอง" (จำนวนเต็ม) 1 // คลิกองค์ประกอบทั้งหมดในคอลเลกชัน myset127.0.0.1: 6379> ในคอลเลกชัน myset, return 1 หมายถึงมีอยู่ 127.0.0.1:6379> myset "หนึ่ง" (จำนวนเต็ม) 1 // คำว่าองค์ประกอบ 3 อยู่ในคอลเลกชัน myset, return 0 หมายถึงไม่มีอยู่ 127.0.0.1:63799> myset "สาม" "1" (จำนวนเต็ม) 1127.0.0.1:6379> SADD ของคุณ "2" (จำนวนเต็ม) 1127.0.0.1:6379> Smembers Yourset1) "1" 2) "2" // สร้างสหภาพสอง sets127.0.1: 6379
รหัสการทำงานของ Java:
โมฆะสาธารณะ settest () {// ล้าง data system.out.println (jedis.flushdb ()); สตริงคีย์ = "myset1"; สตริง key2 = "myset2"; // เพิ่มองค์ประกอบลงในคอลเลกชัน jedis.sadd (key, "aaa", "bbb", "ccc" "ddd"); // รับจำนวนองค์ประกอบใน system.out.println (jedis.scard (key)); // จำนวนจำนวนของชุด // ได้รับการแยกสองชุดและเก็บไว้ในชุดผลลัพธ์ที่สำคัญ และเก็บไว้ในชุดผลลัพธ์คีย์ jedis.sunionstore ("ปลายทาง", key, key2); system.out.println (jedis.smembers ("ปลายทาง")); // ในชุดคีย์ 1 ชุดคีย์ 2 ไม่มีองค์ประกอบและเก็บไว้ในชุดผลลัพธ์คีย์ key2); system.out.println (jedis.smembers ("ปลายทาง")); // กำหนดว่าองค์ประกอบเป็นสมาชิกของ System.out.out.println (jedis.sismember (คีย์, "aaa")); // รับองค์ประกอบจากคีย์ jedis.smove (key, key2, "aaa"); system.out.println (jedis.smembers (key)); // รับ element system.out.println (Jedis.Smembers (key2)); // ลบและรับองค์ประกอบในการรวบรวม jedis.srem (key2, "ccc", "ddd"); system.out.println (jedis.smembers (key2));}6. ประเภทชุดเรียงลำดับ
เราทุกคนเรียกชุดที่สั่งซื้อใน redis zsets
// เพิ่มชุด myzset ที่สั่งซื้อและเพิ่มองค์ประกอบ baidu.com และหมายเลขลำดับที่ให้ไว้คือ 1127.0.0.1:6379> Zadd myzset 1 baidu.com (จำนวนเต็ม) 1 // เพิ่มองค์ประกอบ 360.com ไปยัง myzset และหมายเลขลำดับที่กำหนดไว้ google.com ถึง myzset และหมายเลขลำดับที่มอบให้คือ 2127.0.0.1:6379> Zadd Myzset 2 google.com (จำนวนเต็ม) 1 // เพิ่มองค์ประกอบทั้งหมดของ myzset และแสดงหมายเลขลำดับของพวกเขาในเวลาเดียวกันคุณจะเห็นว่า myzset สั่งแล้ว 127.0.0.1:6379> zrange myzset 0 -1 ด้วยคะแนน 1) "baidu.com" 2) "1" 3) "google.com" 4) "2" 5) "360.com" 6) "3" // รายการองค์ประกอบของ myzset127.0.1: 6379
รหัสการทำงานของ Java คือ:
โมฆะสาธารณะ zsetTest () {// ล้างระบบข้อมูล. out.println (jedis.flushdb ()); สตริงคีย์ = "mysortset"; แผนที่ <สตริง, double = ""> scoremembers = new hashmap <> (); 1002.0); scoremembers.put ("ccc", 1003.0); // เพิ่ม data jedis.zadd (คีย์, 1004.0, "ddd"); jedis.zadd (คีย์, ตัวชี้วัด); // รับจำนวนสมาชิก ระบุสมาชิกคนแรกของชุดที่สั่งซื้อโดยมี 1 ระบุสมาชิกที่สองของชุดที่สั่งซื้อและอื่น ๆ // ตัวห้อยเชิงลบที่มี -1 เป็นตัวแทนของสมาชิกล่าสุด -2 แทนชุดสมาชิกที่สองถึงสุดท้าย <String> coll = jedis.zrange (คีย์, 0, -1); system.out.println (coll); // ส่งคืนลำดับของสมาชิกที่ระบุภายใน System.out.println (jedis.zscore (key, "bbb")); // ลบองค์ประกอบ system.out.println (jedis.zrem (key, "aaa")); system.out.println (jedis.zrange (key, -1); 1002.0, 1003.0));}7. ประเภทแฮช
แฮชจัดเก็บการแมประหว่างสตริงและค่าสตริง
// สร้างแฮชและกำหนดค่า 127.0.0.1:6379> ผู้ใช้ HMSET: 001 ชื่อผู้ใช้รหัสผ่าน Antirez P1PP0 อายุ 34OK // แสดงรายการเนื้อหาของ HASH127.0.0.1: 6379> ผู้ใช้ HGETALL: 0011) "34" // เปลี่ยนค่าใน HASH127.0.0.1: 6379> ผู้ใช้ HSET: 001 รหัสผ่าน 12345 (จำนวนเต็ม) 0 // แสดงรายการเนื้อหาของ HASH127.0.0.1: 6379> ผู้ใช้ HGETALL: 0011)
รหัสการทำงานของ Java:
โมฆะสาธารณะ hashtest () {// ล้างระบบข้อมูล. out.println (jedis.flushdb ()); คีย์สตริง = "myhash"; แผนที่ <สตริง, สตริง = ""> แฮช = ใหม่ hashmap <> (); hash.put ("aaa", "11"); hash.put ( data jedis.hmset (key, hash); jedis.hset (key, "ddd", "44"); // รับองค์ประกอบทั้งหมดของแฮช (ค่าคีย์) system.out.println (jedis.hkeys (key)); // ได้รับค่าทั้งหมด System.out.println (jedis.hlen (key)); // รับฟิลด์และค่าทั้งหมดในแฮชและกลับแผนที่ <สตริง, สตริง = ""> องค์ประกอบ = jedis.hgetall (คีย์); system.out.println (องค์ประกอบ); // กำหนดว่าค่าคีย์ที่กำหนด สอดคล้องกับฟิลด์ที่ระบุใน hash system.out.println (jedis.hmget (คีย์, "aaa", "bbb")); // รับ system.out.out.println (jedis.hget (key, "aaa"); System.out.println (jedis.hgetall (key)); // เป็นฟิลด์ฟิลด์ในคีย์บวก uprementsystem.out.println (jedis.hincrby (คีย์, "bbb", 100)); system.out.println (jedis.hgetall (คีย์));8. ธุรกรรม
ธุรกรรมหมายถึง "การกระทำที่สมบูรณ์ไม่ว่าจะดำเนินการทั้งหมดหรือไม่ทำอะไรเลย"
ก่อนที่จะพูดคุยเกี่ยวกับการทำธุรกรรม Redis เราจะแนะนำคำแนะนำ Redis สี่ข้อก่อน ได้แก่ Multi, Exec, Discard และ Watch คำแนะนำทั้งสี่นี้เป็นพื้นฐานของการประมวลผลธุรกรรม Redis
1. มีการใช้เพื่อประกอบธุรกรรม
2. Exec ใช้ในการทำธุรกรรม
3. Discard ใช้เพื่อยกเลิกการทำธุรกรรม
4. Watch ใช้เพื่อตรวจสอบบางปุ่ม เมื่อคีย์เหล่านี้มีการเปลี่ยนแปลงก่อนที่จะดำเนินการธุรกรรมการดำเนินการของธุรกรรมจะถูกยกเลิก
redis> multi // tag การทำธุรกรรมเริ่มต้น Okredis> inc user_id // หลายคำสั่งจะถูกคิวในลำดับคิว queuedredis> inc user_idqueuededis> inc user_idqueuededis> pingqueuededis> exec // execute 1) (จำนวนเต็ม) 12) (จำนวนเต็ม) 23)
รหัสการทำงานของ Java คือ:
โมฆะสาธารณะ TransactionTest () {ธุรกรรม t = jedis.multi (); // ประกอบการทำธุรกรรม t.set ("สวัสดี", "โลก"); ตอบสนอง <String> การตอบสนอง = t.get ("สวัสดี"); t.zadd ("foo", 1, "barowitch"); "barikoviev"); การตอบสนอง <set <string>> sose = t.zrange ("foo", 0, -1); // ส่งคืนทั้งหมดและส่งคืน system.out.out.println (การตอบสนอง); system.out.println (sose); t.exec () sose.get (). size (); // sose.get () system.out.println (foolbar); system.out.println (sose.get ()); system.out.println ("ขนาดของคอลเลกชันคือ:" + sosesize);}การดำเนินการไปป์ไลน์รหัส Java:
โมฆะสาธารณะ TransactionPipelInetest () {pipeline p = jedis.pipelined (); // เปิดท่อ p.set ("fool", "bar"); p.zadd ("foo", 1, "barowitch"); p.zadd ("foo", 0 p.get ("fool"); การตอบสนอง <set <string>> sose = p.zrange ("foo", 0, -1); system.out.println (pipestring); system.out.println (sose); p.sync (); // ส่ง System.out.println ("=============================================; System.out.println (p.get (" fool "); system.out.out.println setBack = sose.get (); system.out.println (sosesize); system.out.println (setback); system.out.println (pipestring.get ());}สรุป
ข้างต้นคือการแนะนำรายละเอียดทั้งหมดของ Java Operation Redis ในบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้