All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.biz.redis.utils.RedisMapUtils Maven / Gradle / Ivy

There is a newer version: 1.5.2
Show newest version
package com.biz.redis.utils;

import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * Redis Map Utils
 *
 * @author francis
 * @since 2024-04-02 17:16
 **/
@Slf4j
@RequiredArgsConstructor
public class RedisMapUtils {

    private final HashOperations hashOperations;

    private final RedisCommonUtils redisCommonUtils;


    /**
     * HashGet
     *
     * @param key  键 不能为null
     * @param item 项 不能为null
     * @return 值
     */
    public Object hget(@NonNull String key, @NonNull String item) {
        return hashOperations.get(key, item);
    }

    /**
     * 获取hashKey对应的所有键值
     *
     * @param key 键
     * @return 对应的多个键值
     */
    public Map hmget(@NonNull String key) {
        return hashOperations.entries(key);
    }

    /**
     * 往某一个 key 中插入多条数据
     *
     * @param key 键
     * @param map 对应多个键值
     * @return true 成功 false 失败
     */
    public boolean hmset(@NonNull String key, @NonNull Map map) {
        try {
            hashOperations.putAll(key, map);
            return true;

        } catch (Exception e) {
            log.error("error {}", e.getMessage(), e);
        }

        return false;
    }

    /**
     * hash 并设置时间
     *
     * @param key  键
     * @param map  对应多个键值
     * @param time 时间(秒)
     * @return true成功 false失败
     */
    public boolean hmset(@NonNull String key, @NonNull Map map, long time) {
        try {
            hashOperations.putAll(key, map);
            redisCommonUtils.expire(key, time);
            return true;

        } catch (Exception e) {
            log.error("HashSet设置时间 出现异常 error {}", e.getMessage(), e);
        }

        return false;
    }

    /**
     * 向一张hash表中放入数据,如果不存在将创建
     *
     * @param key   键
     * @param item  项
     * @param value 值
     * @return true 成功 false失败
     */
    public boolean hset(@NonNull String key, @NonNull String item, @NonNull Object value) {
        try {
            hashOperations.put(key, item, value);
            return true;

        } catch (Exception e) {
            log.error("向一张hash表中放入数据,如果不存在将创建 出现异常 error {}", e.getMessage(), e);
        }

        return false;
    }

    /**
     * 向一张hash表中放入数据,如果不存在将创建
     *
     * @param key   键
     * @param item  项
     * @param value 值
     * @param time  时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
     * @return true 成功 false失败
     */
    public boolean hset(@NonNull String key, @NonNull String item, @NonNull Object value, long time) {
        try {
            hashOperations.put(key, item, value);
            redisCommonUtils.expire(key, time);
            return true;

        } catch (Exception e) {
            log.error("向一张hash表中放入数据,如果不存在将创建 出现异常 error {}", e.getMessage(), e);
        }

        return false;
    }

    /**
     * 删除hash表中的值
     *
     * @param key  键 不能为null
     * @param item 项 可以使多个 不能为null
     */
    public void delete(@NonNull String key, @NonNull Object... item) {
        hashOperations.delete(key, item);
    }

    /**
     * 判断hash表中是否有该项的值
     *
     * @param key  键 不能为null
     * @param item 项 不能为null
     * @return true 存在 false不存在
     */
    public boolean hasKey(@NonNull String key, @NonNull String item) {
        return hashOperations.hasKey(key, item);
    }

    /**
     * hash递增 如果不存在,就会创建一个 并把新增后的值返回
     *
     * @param key  键
     * @param item 项
     * @param by   要增加几(大于0)
     * @return
     */
    public double incr(@NonNull String key, @NonNull String item, double by) {
        return hashOperations.increment(key, item, by);
    }

    /**
     * hash递减
     *
     * @param key  键
     * @param item 项
     * @param by   要减少记(小于0)
     * @return
     */
    public double decr(@NonNull String key, @NonNull String item, double by) {
        return hashOperations.increment(key, item, -by);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy