redisリストタイプおよび使用シーン(買い占め秒殺)redisの道について(4)

10508 ワード

redis List紹介:リストタイプは、リストの両端に要素を追加したり、リストのクリップを取得したりする秩序ある文字列リストを格納することができます.リストタイプ内部は双方向チェーンテーブルで実現されるため、リストの両端に要素を追加する時間の複雑さは0(1)であり、両端に近い要素を取得するほど速度が速くなる.これは,数千万個の要素を持つリストであっても,頭部または末尾の10個の記録を取得するのが極めて速いことを意味する.

一般的なコマンド


左を押して右を押して取り出す
127.0.0.1:6380> LPUSH list1 123
(integer) 1
127.0.0.1:6380> LPUSH list1 123  2 3 5
(integer) 5
127.0.0.1:6380> RPUSH list1   7 8 9
(integer) 8
127.0.0.1:6380> LRANGE list1 0 -1
1) "5"
2) "3"
3) "2"
4) "123"
5) "123"
6) "7"
7) "8"
8) "9"

左からポップアップ、右からポップアップ
127.0.0.1:6380> lpop list1 
"5"
127.0.0.1:6380> RPOP list1
"9"

要素の数を取得
127.0.0.1:6380> LLEN list1
(integer) 6

リストクリップの取得(遍歴)
127.0.0.1:6380> LPUSH list2 1 2 3 69  3
(integer) 5
127.0.0.1:6380> LRANGE list2 0 2
1) "3"
2) "69"
3) "3"

データの挿入
127.0.0.1:6380> LINSERT list2 after 3 9
(integer) 5

買い占めをする.

@Test
	public void testList(){
		/**
		 *    100 iphonex        
		 *     ID,  redis     ,
		 *   iphonex  ID 1011
		 */
		int count=100;
		String key="kill:1011";
		for(int i=1;i<=count;i++){
			// 100                  
			jedis.rpush(key, i+"");
		}//             
	}
	/**
	 *         
	 * @requestMapping("/kill.action")
	 */
	@Test
	public void kill(){
		String goodsId="1011";
		String key="kill:"+goodsId;
		System.out.println(jedis.llen(key));
		if(jedis.llen(key)!=0){
			String xuhao=jedis.lpop(key);
			if(xuhao!=null){
				System.out.println("    "+xuhao);
				
			}else{
				System.out.println("    ");
				
			}
		}
	}

このように書くのは問題があって、ユーザーを判断していないで、次のsetは引き続き機能を豊かにします