Redis基礎知識之 空間換時間的查詢案例

2021-09-22 17:21:39 字數 932 閱讀 5906

空間換時間是在資料庫中經常出現的術語,簡單說就是把查詢需要的條件進行索引的儲存,然後查詢時為o(1)的時間複雜度來快速獲取資料,從而達到了使用空間儲存來換快速的時間響應!對於redis這個k/v儲存系統來說,複雜的查詢不是它所建議的,它的優勢在於通過key快速定位資料,它定位資料的速度與資料多少沒有直接關係,無論是1萬還是1億資料,它定位的時間複雜度都是o(1),而在實際使用中,可能不簡單使用key定位資料就夠了,可能還需要資料裡的某個屬性去定位資料,這種情況第一感覺不能用redis,或者說,不能用k/v儲存系統了,但這不是我們應該說的,我們要的是解決方案,換個角度去思考,我們是否可以把那個屬性拿出來當新的key,把原來的key當作它的value呢,答案是肯定的,這就是用空間到換時間,只需要兩個查詢就可以搞定了!

上面是乙個100萬的hash集合,key是使用者id,value是乙個使用者實體,我們通過redisclient.redismanager.instance.getdatabase().hashget("votelist", id)很方便的可以拿到對應的使用者實體!

這種需求,我們不要直接解決,如果直接解決,那唯一的辦法就是遍歷所有資料,然後一一對比,時間複雜度就是o(n),太可怕了!

通過新增新的k/v,解決這個問題,這類似於關聯式資料庫裡的全表掃瞄+索引技術!

實現程式:先通過username找到userid,再通過userid找到使用者實體!

public

void findbigdata()

,value=", name,val);

}else

sw.stop();

}

Redis基礎知識

1 redis是開源的高效能鍵值對 key value 資料庫 通過提供各種鍵值資料型別來適應不同場景下的儲存需求,並借助許多高層級的介面使其可以勝任如快取 佇列系統等不同的角色。2 remote dictionary server,以字典結構儲存資料,並允許其他應用通過tcp協議讀寫字典中的內容 ...

redis基礎知識

redis是乙個基於記憶體的高效能key value 1.redis五大基本資料型別 字串 string set get 雜湊 hash hmset hmgetall 鍊錶 list 按照插入順序可以新增乙個元素列表的頭部 左邊 和尾部 右邊 lpush rpush lrange 集合 set sa...

Redis基礎知識

樂觀鎖watch相當於mysql裡面的version jedis採用的是直連的方式,多個執行緒的操作不安全,避免的話採用的是池化技術 redis資料使用的是記憶體中,因此廣泛應用在快取裡面 使用當作快取的原因 模擬一下作業系統裡面的區域性性原理 使用redis不用本地的map的原理 map屬於本地快...