Redis 进击

NoSQL

not only sql; 全新数据库理念;非关系型数据库;

NoSQL 特点

  • 易扩展
  • 灵活的数据模型
  • 大数据量,高性能
  • 高可用

NoSQL 数据库的四大分类

  • 键值对存储 eg: redis, 优势:查询快 劣势:数据缺少结构化
  • 列存储 eg: HBase,优势:查询快 劣势:功能相对局限
  • 文档数据库 eg: MongoDB, 优势:数据要求不是很严格 劣势:查询性能不是特别高,缺少统一查询语法
  • 图形数据库 eg: InfoGrid, 优势:利用图结构相关算法 劣势:需要对图进行计算,不容易做分布式集群方案

NoSQL 产品

MongoDB、Redis、Riak等等

为什么需要 Redis ?

  • High Performance 高并发读写;
  • Huge Storage 海量数据的高效率存储和访问;
  • High Scalability && High Availability 高可扩展性和高可用性;

Redis 概述

高性能键值对数据库,支持的简直数据类型:

  • 字符串类型
  • 列表类型
  • 有序集合类型
  • 散列类型
  • 集合类型

Redis 应用场景

  • 缓存
  • 任务队列
  • 网站访问统计
  • 数据过期处理
  • 应用排行榜
  • 分布式集群架构中的 session 分离

Redis 安装

Mac

1、执行 brew install redis 2、启动 redis,可以使用后台服务启动 brew services start redis。或者直接启动:redis-server /usr/local/etc/redis.conf

启动配置

通过使用 Homebrew,可以大大降低在 Mac OS X 上设置和配置 Redis 开发环境的成本。

brew install redis

通过以上命令执行安装。

设置开机启动 Redis

ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents

通过 launchctl 启动 Redis 服务

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist

使用配置文件启动 Redis 服务

redis-server /usr/local/etc/redis.conf

停用开机启动的 Redis

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.redis.plist

Redis 配置文件存放位置

/usr/local/etc/redis.conf

卸载 Redis 和依赖文件

brew uninstall redis

rm ~/Library/LaunchAgents/homebrew.mxcl.redis.plist

获取 Redis 包信息

brew info redis

测试 Redis 服务是否正在运行

redis-cli ping

如果回复 “PONG”,表明正常运行!

Jedis

Jedis 是 Redis 官方首选的 Java 客户端开发包

入门使用

/**
 * 项目名:demo
 * 包名:com.example
 * 类名:Test
 * 描述:
 *
 * @author Suremotoo
 * @create 2018-05-10 09:08
 */
public class Test {

    @org.junit.Test
    public void test() {
        // 1.连接 redis
        Jedis jedis = new Jedis("127.0.0.1", 6379);
        // 2.存储数据
        jedis.set("name", "Suremotoo");
        // 3.获取数据
        String value = jedis.get("name");
        // 4.控制台打印测试结果
        System.out.println("value = " + value);
        // 5.关闭连接
        jedis.close();
    }

}

如果是连接的 Redis 在 Linux 服务器上,需要设置防火墙

vim /etc/sysconfig/iptables
# 添加一行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT

:wq 保存退出, 最后重启 linux 服务器防火墙

service iptables restart

Jedis 与 JDBC 很类似,也有连接池

    /**
     * 连接池方式连接
     */
    @org.junit.Test
    public void poolTest() {
        // 获得连接池的配置对象
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        // 设置最大连接数
        jedisPoolConfig.setMaxTotal(30);
        // 设置最大空闲连接数
        jedisPoolConfig.setMaxIdle(10);

        // 获得Jedis 连接池
        JedisPool jedisPool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379);

        // Jedis 对象
        Jedis jedis = null;

        try {
            // 通过连接池获得连接
            jedis = jedisPool.getResource();
            // 设置数据
            jedis.set("name", "Suremotoo");
            // 获取数据
            String value = jedis.get("name");
            System.out.println("value = " + value);
            if (value != null && "".equals(value)) {
                jedis.del("name");
            } else {
                System.out.println(" 空 ");
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }

            if (jedisPool != null) {
                jedisPool.close();
            }
        }
    }
WRITTEN BY:    Suremotoo

简约而不简单