关系数据库(MySQL)与NoSQL(Redis) 性能比较

对MySQL进行查询的代码

import java.sql.*;

public class MySQLTime
{
    public static void main(String[] args)
    {
        try
        {

            Class.forName("com.mysql.jdbc.Driver");
            Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/gaysys","root","123456");

            String sql = "SELECT id FROM  admin WHERE id LIKE 'admin'";
            Statement statement = connection.createStatement();

            int sum=0;
            long startTime=System.currentTimeMillis();
            while (true)
            {
                long endTime=System.currentTimeMillis();
                if (endTime-startTime>1000)
                {
                    break;
                }else
                {
                    sum++;

                    ResultSet resultSet = statement.executeQuery(sql);
                }
            }
            System.out.println("MySQL数据库每秒执行"+sum+"次查询");

        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        } catch (SQLException e)
        {
            e.printStackTrace();
        }
    }
}

结果

MySQL数据库每秒执行4980次查询

对Redis进行查询的代码

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;

public class RedisTime
{
    public static void main(String[] args)
    {
        //连接redis服务器(在这里是连接本地的)
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        jedis.set("test","12345");

        int sum=0;
        long startTime=System.currentTimeMillis();

        //采用流水线
        Pipeline pipeline=jedis.pipelined();
        while (true)
        {
            long endTime=System.currentTimeMillis();
            if (endTime-startTime>1000)
            {
                break;
            }else
            {
                sum++;
                pipeline.get("test");
            }
        }
        pipeline.sync();
        System.out.println("redis每秒执行"+sum+"次查询");

    }
}

结果

redis每秒执行641513次查询

结论

虽然两种查询并未完全遵守单一变量原则,氮素,应该勉强可以看出二者性能完全不是一个数量级的

你可能感兴趣的:(java,redis)