zoukankan      html  css  js  c++  java
  • Redis学习-redis概述

    最近刚刚接触了redis技术,对此有一些了解,这是简单做一点总结。

    Redis简介

    首先,简单了解一下NoSQL(Not only sql),不要错误的理解为:没有SQL,而是不仅仅是SQL。NoSQL工具也是一种简易的数据库,它主要是基于内存的数据库,并提供一定的持久化功能。现在有很多这种技术如:memcachedb,redis,MongoDB等等。
    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
    Redis的性能十分优越,可以支持每秒十几万的读/写操作,其性能超数据库,并且支持集群、分布式、主从同步等配置,还支持一定事务能力。
    Redis 与其他 key - value 缓存产品有以下三个特点:

    • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
    • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
    • Redis支持数据的备份,即master-slave模式的数据备份。

    redis的性能优越主要来自3个方面:

    • 基于ANSI C语言编写的,接近于汇编语言的机器语言,运行十分快速。
    • 基于内存的读/写,速度自然比数据库的磁盘读/写要快。
    • 它的数据结构只有6种数据类型,数据结构比较简单,因此规则较少,而数据库则是范式,完整性、规范性需要考虑的规则较多,处理业务会比较复杂。

    Redis在javaweb中的应用

    一般,在javaweb中应用redis存在两个场景,一个是缓存常用的数据;另一个是在需要高速读/写的场合使用它快速读/写,比如一些需要进行商品抢购和抢红包的场合。
    在使用Redis存储的时候,需要从3个方面进行考虑:

    • 业务数据常用吗?命中率如何?如果命中率低,就没有必要写入缓存。
    • 该业务数据是读操作多还是写操作多,如果写操作多,频繁需要写入数据库,也没有必要使用缓存。
    • 业务数据大小如何?如果要存储几百兆字节的文件,会给缓存带来很大的压力,有没有必要?
      考虑这些问题后,如需要缓存,就可以使用了。

    Redis的安装和使用

    我的电脑是windows系统的,所以主要以此为主,其它系统的安装就没有介绍。
    下载地址:redis
    也可以到Redis的官网下载。
    下载下来是一个压缩包,解压后的目录如下:

    方便启动在目录下新建一个startup.cmd,用编辑工具打开,写入以下内容:redis-server redis.windows.conf
    就是通过命令来读取redis-window.conf的内容,用来启动redis,双击启动,出现下图就说明启动成功了。

    在文件夹下还有一个redis-cli.exe,它一个Redis自带的客户端工具,可以连接到redis服务器,如图:

    这样就安装好了redis。

    安装好了,我们通过代码来测试一下redis的性能,要想使用redis,需要下载jedis.jar包。
    下面是测试代码:(代码来自书上例子)

    package com.mz.redis;
    import redis.clients.jedis.Jedis;
    /**
     * @Package com.mz.redis
     * @Description: redis测试
     * @auther MZ
     * @create 2017/10/10 22:14
     */
    public class RedisTest {
        public static void main(String[] args) {
            Jedis jedis = new Jedis("localhost",6379);
    
            int i = 0;
            try {
                long start = System.currentTimeMillis();
                while (true) {
                    long end = System.currentTimeMillis();
                    if (end - start >= 1000) {
                        break;
                    }
                    i++;
                    jedis.set("test" + i, i + "");
                }
            } finally {
                jedis.close();
            }
            System.out.println("redis每秒操作:"+i+"次");
        }
    }
    

    结果如图:

    书上作者的性能可以达到2万多次,而我的只有几千次,每次运行结果都不一样。可以是我的电脑太老了,没能体现redis真正的性能。

  • 相关阅读:
    linux 消息队列
    linux 共享内存
    多线程(八)~ThreadLocal、InheritableThreadLocal的使用
    多线程(四)~数据操作的原子性,使用原子性操作AutomicInteger替换非原子性的i++的操作
    多线程(五)~ wait/notify机制(等待/通知)
    多线程(六)~通过管道进行线程之间的通信:字节流、字符流
    多线程(二)~Thread类相关的API介绍
    多线程(三)~多线程中数据的可见性-volatile关键字
    多线程(一)~基础介绍,简单demo实现
    haproxy学习——安装(一)
  • 原文地址:https://www.cnblogs.com/black-spike/p/7650089.html
Copyright © 2011-2022 走看看