redis删除hash的实现方式

目录
  • redis删除hash方式
  • redis之hash类型
    • redis中存取hash类型
    • 常用命令
    • hash命令小结
  • 总结

redis删除hash方式

在工作中遇到删除hash类型的缓存时遇到了,怎样也删不掉redis里面的缓存,后来发现,hash类型和string类型的换成删除方式不一样,所以在这里做一下整理,后面再有遇到其他类型的,还会陆续的完善。

详细如下:

针对hash类型的缓存删除,函数:

因为需要删除很多缓存内容,所以在common.php写的公共函数进行调用,

function processredis($type,$id=false,$code=false){
        #这里的$type就是标识需要删除哪一块的缓存类型,根据这个类型删除相应的缓存内容。

        if($type==1){
                #hash类型

                $XXXXXheart = $id;
                if($XXXXXheart ){
                    $key        = "{$XXXXXheart }";
                    $redisXXXid = $redisModel->hashDel("XXXXXX:XXXXXXX:XXXXX",$key);
                }

        }elseif($type == 2) {
                #string类型缓存
                $chNum = $id;
                if($chNum != null){
                    $key        = "XXXXX:XXXXX:XXXX:".$chNum ;
                    $redisXXXXid = $redisModel->delete($key);
                }
       }

}

redis之hash类型

redis中存取hash类型

Hash类型保存的值是一个map集合,又因为redis是key-value类型,故hash类型在redis中是key - map,即key - <field,value>。

Map的特点是存储键值对,也是无序不可重复的。

常用命令

(1)将键值对存入hash中:hset key field value

  • 如果key是不存在的,会新建一个hash集。
  • 如果field是hash中不存在,就加入该键值对。
  • 如果field在hash中已经存在,就覆盖原来的值。

返回值:返回1表示field在hash中不存在,返回0表所示已经存在。

(2)获取指定hash集中该field的关联值:hget key field

(3)存入多个值:hmset key field value [field value …]

取出多个值:hmget key field [field…]

(4)获取hash集中所有的字段和值:hgetall key

显然:返回的长度是原hash集长度的2倍。

(5)删除hash中的值:hdel key field [field…]

如果field有不存在的,就忽略该field,继续执行。

返回值:实际删除元素的个数,不包括那些忽略的。

(6)获取hash集中元素的个数:hlen key

(7)判断hash中是否存在指定字段:hexists key field

返回值:1表示存在该字段,0表示该字段不存在,或者key不存在。

(8)获取hash集中所有的字段名:hkeys key

获取hash集中所有的值:hvals key

(9)hash集中指定字段值增加步长:hincrby key field i

返回值:执行成功后字段的值。

  • 如果key哈希集不存在,则新建一个hash集,并把field的值置为0,再执行。
  • 如果key存在,但field不存在,field也默认置为0。

(10)hash集中指定字段值增加float型步长:hIncrByFloat key field f

如果field的值类型不是String,或者增加的值f不能转为浮点型,都会报错。

(11)当不存在指定字段时才赋值:hsetnx key field value

如果key不存在,会创建一个新的hash集。

返回值:1表示字段是个新的字段,成功赋值。0表示字段已存在,不执行操作。

hash命令小结

增:

  • Hset key field value
  • Hmset key field value [field value …]
  • Hsetnx key field value

删:

  • Hdel key field [field…]

查:

  • Hget key field
  • Hmget key field [field…]
  • Hgetall key
  • Hexists key field
  • Hkeys key
  • Hvals key

改:无

其他:

  • Hincrby key field i
  • HincrbyFloat key field f

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决Java Redis删除HashMap中的key踩到的坑

    现象 Java使用Redis删除HashMap中的key时,取出对应的HashMap后通过Java中HashMap的remove方法移除key然后重新调用redis的Hmset方法将覆盖无效 示例代码 //通过key取出对应的HashMap Map<String, String> ruleMap = jedisCluster.hgetAll("HashKey"); //通过java中移除HashMap中的Key ruleMap.remove("ruleA"

  • redis如何取hash的值

    目录 redis取hash的值 redis中存值是Hash冲突如何解决 总结 redis取hash的值 命令:可以取得对应的hash中的具体值 hmget s_account:208 account accountname 结果:“www” 如图 命令:取得hash中的所有key hkeys s_account:208 结果: redis中存值是Hash冲突如何解决 Redis 中的 Hash和 Java的 HashMap 更加相似,都是数组+链表的结构.当发生 hash 碰撞时将会把元素追加到

  • redis中hash表内容删除的方法代码

    hash: Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象. Redis 中每个hash可以存储 232 - 1键值对(40多亿). 实例: 127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000 OK 127.

  • redis删除hash的实现方式

    目录 redis删除hash方式 redis之hash类型 redis中存取hash类型 常用命令 hash命令小结 总结 redis删除hash方式 在工作中遇到删除hash类型的缓存时遇到了,怎样也删不掉redis里面的缓存,后来发现,hash类型和string类型的换成删除方式不一样,所以在这里做一下整理,后面再有遇到其他类型的,还会陆续的完善. 详细如下: 针对hash类型的缓存删除,函数: 因为需要删除很多缓存内容,所以在common.php写的公共函数进行调用, function p

  • Redis分布式锁的实现方式(redis面试题)

    什么是分布式锁? 要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁.进程锁. 线程锁:主要用来给方法.代码块加锁.当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段.线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized是共享对象头,显示锁Lock是共享某个变量(state). 进程锁:为了控制同一操作系统中多个进程访问某个共享资源,因为进程具有独立性,各个进程无法访问其他进程的资源,因此无法通过synchronize

  • redis中Hash字典操作的方法

    目录 1.Redis操作之Hash操作 redis hash字典操作 1.Redis操作之Hash操作 redis支持五大数据类型,只支持第一层,也就说字典的value值,必须是字符串 如果value值想存字典,必须用json转换一下,转成字符串 redis hash字典操作 reids:{ k1:'dafdadfasf', m1:{ 'key2':value2, 'key1':value1, } } 1.hset(name, key, value),插入值 # name对应的hash中设置一个

  • Go结合Redis用最简单的方式实现分布式锁

    目录 前言 单Redis实例场景 加解锁示例 小结 多Redis实例场景 加解锁示例 小结 总结 前言 在项目中我们经常有需要使用分布式锁的场景,而Redis是实现分布式锁最常见的一种方式,并且我们也都希望能够把代码写得简单一点,所以今天我们尽量用最简单的方式来实现. 下面的代码使用go-redis客户端和gofakeit,参考和引用了Redis官方文章 单Redis实例场景 如果熟悉Redis的命令,可能会马上想到使用Redis的set if not exists操作来实现,并且现在标准的实现

  • Redis删除策略的三种方法及逐出算法

    目录 一.前言 二.Redis中的数据特征 三.时效性数据储存结构 四.数据删除策略 1.定时删除 2.惰性删除 3.定期删除 五.删除策略对比 六.逐出算法 1.概念引入 2.八种配置 一.前言 在文章开始之前,我先问大家一个问题:当我们使用指令:expire key second给一个key设置过期时间,过期时间一到,这个key对应的过期数据真的被服务器立即删除了吗?答案是并不会立即删除.知道了这个答案,就来看看Redis中如何处理过期的数据. 二.Redis中的数据特征 Redis是一种内

  • 控制Redis的hash的field中的过期时间

    目录 需求场景 方案一使用redis的Zset配置定时任务 方案二使用mq延时队列 综上 总结 需求场景 在业务中有些数据因为历史原因用的hash结构存储数据,但是后期需求要求其中某个field需要按照一些规则去过期,这个时候原来的逻辑懒得改,可以利用redis的Zset或者mq的延时队列去做过期设置. 方案一使用redis的Zset配置定时任务 捞个图 demo需要清缓存的redis的hash结构如下 然后我们再每次往Agent这个hash结构存储数据的时候,同时向AgentExpire为ke

  • Redis分布式锁的实现方式

    目录 一.分布式锁是什么 1.获取锁 2.释放锁 二.代码实例 上面代码存在锁误删问题: 三.基于SETNX实现的分布式锁存在下面几个问题 1.不可重入 2.不可重试 3.超时释放 4.主从一致性 四.Redisson实现分布式锁 1.pom 2.配置类 3.测试类 五.探索tryLock源码 1.tryLock源码 尝试获取锁 2.重置锁的有效期 更新有效期 3.调用lua脚本 六.释放锁unlock源码 1.取消更新任务 2.删除定时任务 一.分布式锁是什么 分布式锁是 满足分布式系统或集群

  • python redis 删除key脚本的实例

    单机模式 代码片段 安装 pip install redis import redis r = redis.Redis(host='192.168.1.3', port=6188,db=0,decode_responses=True) list_keys = r.keys("DEMO_xx_*") for key in list_keys: r.delete(key) 集群模式 代码片段 安装 pip install redis-py-cluster from rediscluster

  • 浅谈redis加锁常用几种方式

    一.incr加锁 <?php $redis = new Redis(); $redis->connect('127.0.0.1'); $redis->multi(); $redis->incr('number'); //$redis->decr('number'); //$redis->expire('number', -1); var_dump($redis->get('number')); var_dump($redis->ttl('number'));

随机推荐