<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Redis操作哈希結(jié)構(gòu)數(shù)據(jù)

          共 2026字,需瀏覽 5分鐘

           ·

          2020-08-12 10:39


          今天帶來的是Redis操作Hash??傮w上來講與操作字符串的方式基本相同。hash類似于java中的map,存儲(chǔ)的基本上都是String類型的key和value的鍵值對(duì),在內(nèi)存足夠大的情況下,一個(gè)hash結(jié)構(gòu)可以存儲(chǔ)2的32次方-1個(gè)鍵值對(duì)。但是需要注意的是,由于 redis是一個(gè)內(nèi)存數(shù)據(jù)庫, 所有數(shù)據(jù)基本上都存在于內(nèi)存當(dāng)中, 會(huì)定時(shí)以追加或者快照的方式刷新到硬盤中。所以當(dāng)我們讀取大量數(shù)據(jù)的時(shí)候,我們要考慮到對(duì)JVM內(nèi)存的影響。?


          同時(shí)在接下來我們的操作中我們會(huì)看到,Redis對(duì)hash 的操作與對(duì)字符串的操作相比,都會(huì)多一個(gè)hash名作為參數(shù),這是需要注意的。


          Redis存hash數(shù)據(jù)


          添加整個(gè)Hash?


          @RequestMapping("hmset")
          ????@ResponseBody
          ????public?Map<String,Object> hmset(){
          ????????Map<String,Object> map = new?HashMap<>();
          ????????map.put("f1","value1");
          ????????map.put("f2","value2");
          ????????stringRedisTemplate.opsForHash().putAll("hash",map);
          ????????return??map;
          ????}


          由于此時(shí)我們存取的都是String類型的數(shù)據(jù),所以我使用的依然是StringRedisTemplete,上述操作完成后在可視化工具中可見



          向已經(jīng)存在的hash結(jié)構(gòu)中添加或修改數(shù)據(jù) ?


          @RequestMapping("hset")
          ????@ResponseBody
          ????public?Map<String,Object> hset(){
          ????????Map<String,Object> map = new?HashMap<>();
          ????????stringRedisTemplate.opsForHash().put("hash","f1","new value1");
          ????????return??map;
          ????}



          可以看到數(shù)據(jù)已經(jīng)被修改


          為hash添加數(shù)據(jù)??


          @RequestMapping("hsetnx")
          ????@ResponseBody
          ????public?void?hsetnx(){
          ????????Boolean?success = stringRedisTemplate.opsForHash().putIfAbsent("hash","f5","9");
          ????????System.out.println(success);
          ????}


          putIfAbsent表示如果已經(jīng)存在對(duì)應(yīng)的key則不會(huì)添加,沒有對(duì)應(yīng)的key則添加,如圖



          判斷Hash結(jié)構(gòu)中是否有輸入的key ?


          @RequestMapping("hexsit")
          ????@ResponseBody
          ????public?void?hexsit(){
          ??????Boolean?exsit = stringRedisTemplate.opsForHash().hasKey("hash","f3");
          ??????System.out.println(exsit);
          ????}


          根據(jù)我們插入的數(shù)據(jù),最后控制臺(tái)輸出了false


          獲取hash中的所有鍵值對(duì) ??


          @RequestMapping("hgetall")
          ????@ResponseBody
          ????public?Map<Object,Object> hgetall(){
          ???????Map<Object,Object> map= stringRedisTemplate.opsForHash().entries("hash");
          ????????return??map;
          ????}


          結(jié)果可見如圖



          hash實(shí)現(xiàn)加法


          @RequestMapping("hincrby")
          ????@ResponseBody
          ????public?void?hincrby(){
          ????????stringRedisTemplate.opsForHash().put("hash","f4","8");
          ?????????Long f4 = stringRedisTemplate.opsForHash().increment("hash","f4",6);
          ?????????System.out.println(f4);
          ????}



          hash實(shí)現(xiàn)獲取所有key的值?


          @RequestMapping("hvals")
          ????@ResponseBody
          ????public?void?hvals()
          {
          ????????List list?= stringRedisTemplate.opsForHash().values("hash");
          ????????for?(int?i =0;i<list.size();i++){
          ????????????System.out.println(list.get(i));
          ????????}
          ????}


          可見控制臺(tái)輸出



          hash實(shí)現(xiàn) 刪除元素??


          @RequestMapping("hdel")
          ????@ResponseBody
          ????public?void?hdel(){
          ????????//返回真實(shí)刪除的個(gè)數(shù)
          ????????Long count = stringRedisTemplate.opsForHash().delete("hash","f2","f3");
          ????????System.out.println(count);//此處返回1
          ????}


          此時(shí)數(shù)據(jù)庫中不存在f3,控制臺(tái)中輸出了1.


          出處:csdn.net/u011342403/article/details/79080968


          瀏覽 115
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    成人做爱影片 | 欧美激情综合色综合啪啪五月 | 91激情在线 | 国内激情自拍 | 新超碰99 |