搜尋

首頁  >  問答  >  主體

如何刪除redis的hash結構中第一個域?

例如:

user:1 name "zhangsan"
user:1 num "001"

user:2 name "lisi"
user:2 num "002"

user:3 name "wang"
user:3 num "003"

在不指定user:1的情況下刪除第一條域user:1。
其實需求類似list中的lpop,但還是現在需要hash這種資料結構來記錄id。

PHP中文网PHP中文网2798 天前786

全部回覆(3)我來回復

  • 大家讲道理

    大家讲道理2017-04-24 09:14:30

    hash結構是沒有順序的,所以第一條是什麼都不知道,何來的刪除第一條,你所認為的第一條只是你插入的順序中的第一條,但是很抱歉hash並不依照你的插入順序進行排序,所以你就算遍歷hash也未必能夠得到你想要的結果。
    如果希望遍歷順序保持與插入順序一致,可使用list。
    你的需求可以透過兩個結構來實現,一個list用於維護集合順序,另一個hash用於保存k-v數據,刪除時從list中pop出一個數據,然後到hash中根據key進行刪除即可。

    回覆
    0
  • PHPz

    PHPz2017-04-24 09:14:30

    額,那隻能hKeys去取出所有key值,然後在應用層去取出第一個key,然後hget同時hdel

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-24 09:14:30

    哈希鍊錶、//刪除單一實體
    $redis->hDel('hashkey', 'key1');

    //刪除整個hash
    $redis->del('hashkey');

    刪除一個redis的key都是用del方法, 不管是string,hash,list,set等類型, 都一樣,RPOP也可以取出來。

    回覆
    0
  • 取消回覆