• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Redis > redis key 模糊查询

redis key 模糊查询

作者:zling工作室 字体:[增加 减小] 来源:互联网 时间:2017-08-07

zling工作室通过本文主要向大家介绍了redis 模糊删除key,redis 查询key,redis批量查询key,redis查询key数量,redis key等相关知识,希望本文的分享对您有所帮助

一开始使用 keys() 这种形式,大发现网上大量文章表示,这种形式会非常耗费内存。

于是改一下方式,使用hash, (key hkey hvalue),把要模糊查询的值放到hkey上面。然后使用scan来模糊查询。效率上面没什么变化。

 

期间有一个问题花了不少时间:

 

sacanBuider.match("*t*")  匹配hkey,而hkey是序列化过的,头部加了标识,所以导致 t* 这样通配符失效。后来不redis.setHashKeySerializer(new StringRedisSerializer());  

ok了,不知道有没有人遇到这种问题,有没有其他办法。

 

这种模糊查询效率没有经过大数据的测试,不知道是否是好办法。

 

Test代码:

   
    public void redishashTest11(){
   
    redis.setKeySerializer(new StringRedisSerializer());    
    redis.setValueSerializer(new Jackson2JsonRedisSerializer(String.class)); 
    redis.setHashKeySerializer(new StringRedisSerializer());  
    redis.setHashValueSerializer(new StringRedisSerializer());
    BoundHashOperations bo = redis.boundHashOps("testhash");


      //redis.setValueSerializer(new Jackson2JsonRedisSerializer(String.class));    
     //  redis.afterPropertiesSet();    
    //redis.boundValueOps("test").set("czltest");
    StringRedisSerializer sser = new StringRedisSerializer();
   
      bo.put("test1", "xxx3");
      bo.put("est2", "cxx4");
      
    ScanOptionsBuilder sacanBuider=  new ScanOptionsBuilder();
        sacanBuider.match("*t*");
        ScanOptions so =sacanBuider.build();
        System.out.println("so.toOptionString():"+so.toOptionString());
        org.springframework.data.redis.core.Cursor cur = bo.scan(sacanBuider.build());
       
       
        try {
        //cur.open();
        while(cur.hasNext()){
        Map.Entry e= (Map.Entry) cur.next();
        System.out.println("key:"+e.getKey()+" vaule:"+e.getValue());
        }
    cur.close();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
       
     }
    

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Redis批量删除KEY的方法
  • redis key 模糊查询

相关文章

  • 2017-05-11利用Redis统计网站在线活跃用户的方法
  • 2017-05-11windows环境下Redis+Spring缓存实例讲解
  • 2017-05-11浅谈redis采用不同内存分配器tcmalloc和jemalloc
  • 2017-05-11redis配置认证密码的方法
  • 2017-05-11Redis发布订阅和实现.NET客户端详解
  • 2017-05-11Redis教程(六):Sorted-Sets数据类型
  • 2017-05-11Redis list 类型学习笔记与总结
  • 2017-05-11Windows下Redis的安装使用教程
  • 2017-07-22Redis系列(三)--过期策略
  • 2017-05-11Redis中的动态字符串学习教程

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • Redis String 类型和 Hash 类型学习笔记与总结
    • redis key 模糊查询
    • CentOS下Redis数据库的基本安装与配置教程
    • 深入了解Redis的性能
    • Redis 中spark参数executor-cores引起的异常解决办法
    • 简介Lua脚本与Redis数据库的结合使用
    • 浅谈redis采用不同内存分配器tcmalloc和jemalloc
    • win 7 安装redis服务【笔记】
    • 将MongoDB作为Redis式的内存数据库的使用方法
    • 在redhat6.4安装redis集群【教程】

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有