美文网首页
关于测试从redis和本地数据库中拿数据的延时

关于测试从redis和本地数据库中拿数据的延时

作者: 代码potty | 来源:发表于2018-08-09 22:42 被阅读0次

因为主要测试从数据库中拿数据,所以在redis中,我只写了存取数据的方法,代码如下:

    public class TestRedisTime {
    
        private final JedisPool jedisPool;
    
        private final Logger logger = LoggerFactory.getLogger(this.getClass());
    
        private RuntimeSchema<Book> schema = RuntimeSchema.createFrom(Book.class);
    
        public TestRedisTime(String ip,int port){
            jedisPool = new JedisPool(ip,port);
        }
    //设置缓存
        public void setRedis(Book book){
            try {
                Jedis jedis = jedisPool.getResource();
                try {
                    String key = "Book:"+book.getBookId();
                    byte[] b = ProtostuffIOUtil.toByteArray(book,schema, LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
                    jedis.setex(key.getBytes(),3600,b);
                } finally {
                    jedis.close();
                }
    
            } catch (Exception e) {
                logger.error(e.getMessage(),e);
            }
        }
    //获取缓存
        public Book getRedis(int book_id){
            try {
                Jedis jedis = jedisPool.getResource();
                try {
                    String key = "book:"+book_id;
                    byte[] b = jedis.get(key.getBytes());
                    if (b != null){
                        Book book = schema.newMessage();
                        ProtostuffIOUtil.mergeFrom(b,book,schema);
                        return book;
                    }
                }finally {
                    jedis.close();
                }
            } catch (Exception e) {
                logger.error(e.getMessage(),e);
            }
            return null;
        }
    }

redis核心代码写好后,就是直接测试了,测试代码如下:

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:spring/spring-dao.xml")
    public class BookDaoTest {
    
        @Autowired
        BookDao bookDao;
    
        @Autowired
        TestRedisTime redisTime;
    
        @Test
        public void selectBook() {
            Date date1 = new Date();
            Book book = bookDao.selectBook(1);
            Date date2 = new Date();
            System.out.println("before:"+(date2.getTime()-date1.getTime()));
            redisTime.setRedis(book);
            Date date3 = new Date();
            redisTime.getRedis(1);
            Date date4 = new Date();
            System.out.println("after:"+(date4.getTime()-date3.getTime()));
        }
    }

最后控制台输出的结果如下图所示:


image.png

简直快的一批,这还只是对比本地数据库和本地redis缓存之间的差异,要是算上网络时延,应该会更高些
可见缓存机制还是挺强大的。

相关文章

  • 关于测试从redis和本地数据库中拿数据的延时

    因为主要测试从数据库中拿数据,所以在redis中,我只写了存取数据的方法,代码如下: redis核心代码写好后,就...

  • springboot集成redis

    jedis 使用 1.导入依赖 2.测试代码(测试和本地的redis链接) 3.事务测试 连接数据库 操作数据 断...

  • redis一般测试

    一、redis自带工具: redis-cli测试工具 redis-check-dump 本地数据库检测工具 r...

  • redis的数据击穿和雪崩及处理办法

    redis击穿: 请求数据顺序,首先会从redis缓存中拿数据,若未拿到则查数据库,再写到redis。如果是请求一...

  • 缓存

    数据库(mySQL..) 本地缓存(osCache..) 分布式缓存(redis,memchched) 数据库本地...

  • 云数据库 Redis 版功能特性

    关于云数据库 Redis 版详细了解: 云数据库 Redis 版使用教程 (云数据库Redis版是兼容Redis协...

  • redis实现分布式锁-redisson

    1、引入包: 2、redis在yml中的配置: 因为本地环境和测试环境的redis部署方式不同,本地为单节点,测试...

  • Android实战:美食项目(四)

    导入Room缓存数据 当有网络的时候从网络数据库中获取,无网络的情况下直接从本地数据库中获取。 创建本地数据库的数...

  • iOS的FMDB数据库使用

    在iOS开发中,关于本地数据库的类型,大致分为四种:Plist和NSUserDefault(轻量型数据库),...

  • 若依框架启动

    打开MySQL服务 本地数据库(Navicat Premium) 启动redis-service redis-cl...

网友评论

      本文标题:关于测试从redis和本地数据库中拿数据的延时

      本文链接:https://www.haomeiwen.com/subject/rhrhbftx.html