基于Redis对用户数量进行统计——计数器系统的模拟实现

本文介绍了基于Redis实现用户数量统计的项目,涵盖了Redis的使用、类设计以及文件监听技术。项目中封装了Redis操作,如字符串、哈希的增删查改,并通过json文件管理计数器和动作,实现数据的动态更新。
摘要由CSDN通过智能技术生成

一、项目背景

Remote Dictionary Server (Redis),即远程字典服务,是使用ANSI C语言编写,支持网络、可基于内存亦可持久化的日志型的,Key-Value型的数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值value可以是string、hash、list、set、sorted set等类型。应用场景:缓存、任务队列、排行榜、网站访问统计、数据过期处理、分布式集群架构中session分离。
本项目为非关系数据库课程的作业之一,利用了Redis对用户数量进行统计,在此基础上实现了周期性统计。
开发工具:IntelliJ IDEA

二、项目设计

2.1 类描述

2.1.1 JedisInstance.java

Jedis对象实例, 对外暴露了一个获取User对象的静态方法。

public class JedisInstance {
   
    //私有化构造函数
    private JedisInstance(){
    }

    //定义一个静态枚举类
    static enum SingletonEnum{
   
        //创建一个枚举对象,该对象天生为单例
        INSTANCE;
        private JedisPool jedisPool;
        //私有化枚举的构造函数
        private SingletonEnum(){
   
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(30);
            config.setMaxIdle(10);

            jedisPool = new JedisPool(config, "127.0.0.1", 6379);
        }
        public JedisPool getInstnce(){
   
            return jedisPool;
        }
    }
 
    //对外暴露一个获取User对象的静态方法
    public static JedisPool getInstance(){
   
        return SingletonEnum.INSTANCE.getInstnce();
    }
}

2.1.2 RedisUtil.java

Redis常用操作封装类,封装了value类型为string、hash、set、list、map的一些操作。该项目使用了简单的封装操作。
String:添加元素set,获取元素get,追加append,incr,decr,incrBy,decrBy
Hash:添加元素hset,获取元素hget,hincrBy
(项目中只用到了get、incrBy、decrBy、hincrBy、hget)
Set:添加元素sadd、删除元素srem、获得key对应的value总数scard、获得key对应的所有value smembers、判断set是否存在sismember、随机获取数据srandmember
List:添加元素lpush、获取list lrange、删除任意类型的key del
Map:设置map hmset、获取map的key个数hlen、获取map中所有的key hkeys、获取map中所有的value hvals、获取map中指定key的value hmget、获取map所有的key和value hgetAll、删除指定key的map。

public class RedisUtil {
   

    //获取连接
    private final Jedis jedis = JedisInstance.getInstance().getResource();

    //==================================string===================================

    //string的value在遇到incr, decr操作时会转成数值型进行计算
    //数值加1
    public void incr(String key){
   
        jedis.incr(key);
    }

    //数值减1
    public void decr(String key)
    {
   
        jedis.decr(key);
    }

    //数值加num
    public void incrBy(String key, long num){
   
        jedis.incrBy(key, num);
    }

    //数值减num
    public void decrBy(String key, long num)
    {
   
        jedis.decrBy(key, num);
    }

    //为string添加元素
    public void set(String key, String value) {
   
        jedis.set(key,value);
    }

    //获取string
    public String get(String key) {
   
        return jedis.get(key);
    }

    //追加string
    public void append(String key, String value) {
   
        jedis.append(key,value);
    }

    //==================================hash===================================

    //hash数值加num
    public void hincrBy(String key, String field, long num)
    {
   
        jedis.hincrBy(key, field, num);
    }

    //为hash添加元素
    public void hset(String key, String field, String value) {
   
        jedis.hset(key,field,value);
    }

    //获取hash元素
    public String hget(String key, String field) {
   
        return jedis.hge
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值