Redis資料庫之資料型別

2021-08-29 14:08:49 字數 4444 閱讀 6819

redis有5種資料型別:

1)  字串string語法/命令

① 賦值與取值:

set key value

get key

jedis的實現:

@test

public void test()

② 向尾部追加值

③ 獲取字串長度

strlen key

strlen命令返回鍵值的長度,如果鍵不存在則返回0。

jedis的實現:

@test

jedis jedis = new jedis("192.168.100.132", 6379);

"address", "beijing");

long len = jedis.strlen("name");

system.out.println(len);

jedis.close();

}

④ 同時設定/獲取多個鍵值

mset key value [key value …]

mget key [key …]

jedis的實現:

@test

public void testmset() );

jedis.close();

}

2) 雜湊hash語法/命令

① 賦值與取值

hset key field value

一次只能設定乙個字段值

hget key field                  

一次只能獲取乙個字段值

hmset key field value [field value ...]            

一次可以設定多個字段值

hmget key field [field ...]                                 

一次可以獲取多個字段值

hgetall key

② 判斷字段是否存在

hexists key field

hsetnx key field value  當字段不存在時賦值,類似hset,區別在於如果字段已經存在,該命令不執行任何操作。

③ 刪除字段

可以刪除乙個或多個字段,返回值是被刪除的字段個數

hdel key field [field ...]

④ 只獲取欄位名或字段值

hkeys key

hvals key

⑤ 獲取字段數量

hlen key

@test

public void testhset() );

system.out.println(list);

setkeys = jedis.hkeys("user");

listhvals = jedis.hvals("user");

system.out.println(keys);

system.out.println(hvals);

jedis.close();

}

3) 列表list語法/命令① 向列表兩端增加元素

lpush key value [value ...]  從左向右

rpush key value [value ...]  從右向左

② 從列表兩端彈出元素

lpop key

rpop key

lpop命令從列表左邊彈出乙個元素,會分兩步完成,第一步是將列表左邊的元素從列表中移除,第二步是返回被移除的元素值。

③ 獲取列表中元素的個數

llen key

④ 獲取列表片段

lrange key start stop  

lrange命令是列表型別最常用的命令之一,獲取列表中的某一片段,將返回start、stop之間的所有元素(包含兩端的元素),索引從0開始。索引可以是負數,如:「-1」代表最後邊的乙個元素。

⑤ 刪除列表中指定的值

lrem key count value

lrem命令會刪除列表中前count個值為value的元素,返回實際刪除的元素個數。

當count>0時, lrem會從列表左邊開始刪除。

當count<0時, lrem會從列表後邊開始刪除。

當count=0時, lrem刪除所有值為value的元素。

@test

public void testlist() );

string itemid = jedis.rpop("itemid");

system.out.println(itemid);

system.out.println(jedis.llen("itemid"));

listlist = jedis.lrange("itemid", 0, -1);

system.out.println(list);

jedis.close();

}

4) 無序集合set語法/命令① 增加/刪除元素

sadd key member [member ...]

srem key member [member ...]

② 獲得集合中的所有元素

smembers key

③  判斷元素是否在集合中,無論集合中有多少元素都可以極速的返回結果

sismember key member

@test

public void testset() );

jedis.sadd("myset1", new string);

jedis.srem("myset1", new string);

setset = jedis.smembers("myset1");

system.out.println(set);

boolean boolean1 = jedis.sismember("myset1", "b");

system.out.println(boolean1);

jedis.close();

}

5) 有序集合sortset語法/命令在集合型別的基礎上有序集合型別為集合中的每個元素都關聯乙個分數,這使得我們不僅可以完成插入、刪除和判斷元素是否存在在集合中,還能夠獲得分數最高或最低的前n個元素、獲取指定分數範圍內的元素等與分數有關的操作。

在某些方面有序集合和列表型別有些相似。

1、二者都是有序的。

2、二者都可以獲得某一範圍的元素。

但是,二者有著很大區別:

1、列表型別是通過鍊錶實現的,獲取靠近兩端的資料速度極快,而當元素增多後,訪問中間資料的速度會變慢。

2、有序集合型別使用雜湊表實現,所有即使讀取位於中間部分的資料也很快。

3、列表中不能簡單的調整某個元素的位置,但是有序集合可以(通過更改分數實現)

4、有序集合要比列表型別更耗記憶體。

① 增加元素

zadd key score member [score member ...]

② 獲取元素的分數

zscore key member

③ 獲得排名在某個範圍的元素列表

zrange key start stop [withscores]                     照元素分數從小到大的順序返回索引從start到stop之間的所有元素(包含兩端的元素)

④ zrevrange key start stop [withscores]              照元素分數從大到小的順序返回索引從start到stop之間的所有元素(包含兩端的元素)

⑤  zrange scoreboard 0 1 withscores      如果需要獲得元素的分數的可以在命令尾部加上withscores

引數

⑥ 獲得指定分數範圍的元素

zrangebyscore key min max [withscores] [limit offset count]

⑦ 增加某個元素的分數,返回值是更改後的分數。

zincrby  key increment member

⑧ 獲得集合中元素的數量

zcard key

⑨ 獲得指定分數範圍內的元素個數

zcount key min max

⑩ 按照排名範圍刪除元素

zremrangebyrank key start stop

按照分數範圍刪除元素   zremrangebyscore key min max

獲取元素的排名   zrank key member    zrevrank key member

資料庫之資料型別

在學習到sql入門經典的時候看到資料時頓感親切,因為資料型別在vb中也有提及,那麼sql入門經典中的資料庫的資料型別究竟是怎樣的呢?當需要儲存文字時,將使用一種字元資料型別,存在4種字元資料型別的變種可供挑選 char 16 分配8個字元的空間,並占用大約8個位元組的空間 varchar 16 分配...

Nosql資料庫 redis(四)資料型別

上篇部落格介紹了兩種資料型別string和hash,下面我們接著來看 redis 是乙個鍊錶結構,主要的功能是push pop 獲取乙個範圍的所有值等等,操作中key理解為鍊錶的名字。redis的list型別其實就是乙個每個子元素都是string型別的雙向鍊錶。我們可以通過push pop操作從鍊錶...

資料庫系列 Redis高階資料型別

基礎操作 getbit key offset 獲取指定key對應偏移量上的bit值 setbit key offset value 設定指定key對應偏移量上的bit值,value只能是1或0擴充套件操作 bitop op destkey key1 key2.對指定key按位進行交 並 非 異或操作...