二:redis 的hash類型相關操作,redishash

來源:互聯網
上載者:User

二:redis 的hash類型相關操作,redishash
=====================二種:hash類型==================
    介紹:redis -> hash是一個string類型的field和value的映射表
             hash特別適合對應儲存物件,相較於將對象的每個欄位存成單個string類型
             將一個Object Storage Service在hash類型中會佔用更少的記憶體,並且可以方便的存取整個對象
            
            
    0:hset *如果 key(就是hash表) 不存在,一個新的雜湊表被建立並進行 HSET 操作
            設定hash field為指定值,如果key不存在,則先建立
            例子:hset user:001 name leyangjun     會建立表

    0.2:hsetnx
            設定hash field 為指定值,如果不存在,則建立,如果存在則返回0
            例子:hsetnx user:002 name leyangjun
    1:hmset:設定多個雜湊表的欄位值
            同時設定hash的多個field
            例子:hmset user003 name leyangjun age 23 sex 1   -->對雜湊表003設定值成功
            hget擷取: hget user:003 name    -->擷取雜湊表003 name的值
    2:hget
            擷取指定的hash field值
            例子:hget user003 name      -->表明  欄位
    3: hmget
            擷取全部指定的hash field
            例子:hmget user:003 name age sex
    4:hincrby (對某個值就行自)
            指定的hash field加上給定值
            例子:hincrby user:003 age 5  -->給原來age的值 加 5  20+5
    5: hexists
            測試指定的field是否存在
            例子: hexists user:003 sex   -->判斷hash表欄位是否存在
    6:hlen
            返回指定hash表中所有的field數
            例子:hlen user003
    7:hdel
            刪除指定hash表中field的值
            例子:hdel user003 age     -->刪除user003 表中age的欄位
    8:hkeys
            返回hash表中所有的欄位
            例子:hkeys user003
    9:hvals
            返回hash表的所有value
            例子:hvals user003   -->所有表中key對應的值
    10:* hgetall  常用
            擷取某個hash中全部的field及value
            例子:hgetall user003
    =========================================END=======================================
Java 開發 2.0: 現實世界中的 Redis :Redis 如何在包含大量讀取操作的應用程式中戰勝 memcached此外我還討論過較常見基於伺服器資料存放區比 MongoDB 和 CouchDB每資料存放區都有其優勢和劣勢特別當應用於特定領域時 本期 Java 開發 2.0 關注 Redis種輕量級索引值對資料存放區多數 NoSQL 實現本質上都索引值對 Redis 支援非常豐富值集其包括字串、列表、集及散列因此Redis 通常被稱資料結構伺服器Redis 也異常快速而聞名使得成某特定類型使用案例優選擇 當我們想要瞭解種新事物時其同熟知事物進行比較能會有所協助因此我們通過對比其與 memcached 相似性開啟 Redis 探索之旅接著我們介紹 Redis 主要功能些功能使其某些應用情境勝過 memcached我向您展示何 Redis 作傳統資料存放區用於模型對象Redis 和 memcached Memcached 眾所周知記憶體對象緩衝系統通過目標鍵和值匯入記憶體緩衝運行因此Memcached 能迴避讀取磁碟時發生 I/O 成本問題 Web 應用程式和資料庫之間粘貼 memcached 時會產生更好讀取效能因此對於些需要快速資料查詢應用程式Memcached 錯選擇其例子股票查詢服務需要另外訪問資料庫擷取相對待用資料股票名稱或價格資訊 MemcacheDB Redis 與 memcached 相比較並公平與 MemcacheDB 相比要好多MemcacheDB 分布式索引值對儲存系統專資料持久化而設計MemcacheDB 與 Redis 較相似其新增優勢使其輕鬆地與 memcached 實現用戶端進行通訊 memcached 也有其局限性其事實所有值均簡單字串Redis 作 memcached 替代者支援更加豐富功能集些基準 (benchmarks) 也表明 Redis 速度要比 memcached 快多Redis 提供豐富資料類型使其記憶體儲存更複雜資料使用 memcached 無法實現同 memcached 樣Redis 持久化其資料 Redis 解決了重大緩衝問題而其豐富功能集又其找了其用途由於 Redis 能夠磁碟上儲存資料及跨節點複製資料因而作資料倉儲用於傳統資料模式(也說您使用 Redis像使用 RDBMS 樣)Redis 還經常被用作隊列系統本用例Redis 備份和工作隊列持久化儲存(利用 Redis 清單類型)基礎GitHub 此種方法使用 Redis 大規模基礎架構樣本準備好 Redis立即開始! 要開始使用 Redis您需要訪問通過本地安裝或者託管供應商來實現訪問您使用 MAC安裝過程能簡單您使用 Windows??您需要先安裝 Cygwin您正尋找託管供應商Redis4You 擁有免費計劃管您何種方式訪問您都能夠根據本文下列樣本進行操作我需要指出使用託管供應商進行緩衝能並好緩衝解決方案因網路延遲能會抵消任何效能優勢 您需要通過命令與 Redis 進行互動說裡沒有 SQL 類查詢語言使用 Redis 工作非常類似於使用傳統 map 資料結構即所有切都擁有鍵和值每值都有多種與之關聯資料類型每資料類型都有其自己命令集例您計劃使用單一資料型別比某種緩衝模式您使用命令 set 和 get 您通過命令列 shell 與 Reids 執行個體進行互動還有多用戶端實現編程方式與 Redis 進行互動清單 1 展示了使用基礎命令簡單命令列 shell 互動:清單1. 使用基礎 Redis 命令 redis 127.0.0.1:6379> set page registration OK redis 127.0.0.1:6379> keys * 1) "foo" 2) "page" redis 127.0.0.1:6379> get page "registration" 裡我通過 set 命令鍵 "page" 與值 "registration" 相關聯結著我發出 keys 命令(綴 * 表示我想看所有用執行個體鍵keys 命令顯示有 page 值和 foo我通過 get 命令檢索與鍵關聯值請記住使用 get 檢索值只能字串索引值列表您必須使用特定列表命令來檢索列表元素(注意有查詢實值型別命令)Java 與 Jedis 整合 對於些想要 Redis 整合 Java 應用程式編程人員Redis 團隊建議使用名 Jedis 項目Jedis 輕量級庫本地 Redis 命令映射 Java 方法例 Jedis 擷取並設定簡單值清單 2 所示:清單2. Java 代碼基礎 Redis 命令 JedisPool pool = new JedisPool(new JedisPoolConfig(), "localhost"); Jedis jedis = pool.getResource(); jedis.set("foo", "bar"); String foobar = jedis.get("foo"); assert foobar.equals("bar"); pool.returnResource(jedis); pool.destroy(); 清單 2 我配置了串連池並捕獲串連(與您典型 JDBC 情境操作非常相似)我清單底部設定了返回操作串連池邏輯之間我設定了值 "bar" 和鍵 "foo"我通過 get 命令檢索 與memcached 類似Redis 允許您到期(expiration)時間關聯值因此我設定了樣值(比股票臨時交易價格)終從 Redis 緩衝清除掉我想 Jedis 設定到期時間需要發出 set 調用之其和到期時間關聯清單 3 所示:清單3. Redis 值設定終止 jedis.set("gone", "daddy, gone"); jedis.expire("gone", 10); String there = jedis.get("gone"); assert there.equals("daddy, gone"); Thread.sleep(4500); String notThere = jedis.get("gone"); assert notThere == null; 清單 3 我使用了 expire 調用 "gone" 值設定 10 秒鐘內終止調用 Thread.sleep 之"gone" get 調用會返回 nullRedis 資料類型 使用Redis 資料類型比列表和散列需要專用命令用法例我通過鍵附加值來建立列表
redis是什麼rediskey-value儲存系統和Memcached類似支援儲存value類型相對更多包括string(字串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(雜湊類型)些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富操作而且些操作都原子性此基礎上redis支援各種同方式排序與memcached樣了保證效率資料都緩衝記憶體區別redis會周期性把更新資料寫入磁碟或者把修改操作寫入追加記錄檔案並且此基礎上實現了master-slave(主從)同步
Redis 高效能key-value資料庫 redis出現大程度補償了memcached類key/value儲存足部 分場合對關聯式資料庫起好補充作用提供了PythonRubyErlangPHP用戶端使用方便
redis提供五種資料類型:stringhashlistset及zset(sorted set)
redis使用了兩種檔案格式:全量資料和增量請求

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.