欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis在linux下安装使用及用Jedis远程连接

程序员文章站 2022-04-23 22:30:51
...

Redis属于NoSql(not only sql)数据库,NoSql意思是“不仅仅是sql”,指非关系型数据库。

NoSql

随着网站访问量的提升,特别是超大规模高并发的网站,传统关系型数据库在处理请求时暴露出了很多问题,其中包括对于数据库高并发读写的需求,对海量数据高效存储和访问的需求,对数据库可扩展性的需求,这些问题对于关系型数据库是无法解决的。NoSql型数据库的产生就是为了解决大数据问题。

NoSql的特点

  1. 易扩展
    NoSql数据库数据之间无关系,比如没有关系型数据库中的外键之类,这样非常容易扩展。
  2. 大数据量,高性能
    NoSql数据库结构简单,读写性能非常高。
  3. 灵活的数据模型
    NoSql无需为存储的数据建立字段,然而在关系数据库中增删字段非常麻烦。
  4. 高可用
    可以方便实现高可用框架,比如HBase。

关系型数据库和NoSql数据库

关系型数据库是基于关系表的数据库,最终将数据持久化到磁盘上,NoSql数据库是基于特殊的结构,将数据存储到内存的数据库。从性能上讲,NoSql数据库优于关系型数据库,从安全上讲,关系型数据库优于NoSql数据库。所以在开发时,关系型数据库和NoSql数据库一起使用,达到性能和安全的双保证。

Redis

Redis是用C语言开发的高性能键值对数据库,通过提供多种键值数据类型来适应多种场景的需求。
有:
1. 字符串
2. 列表
3. 散列
4. 集合
5. 有序集合
redis在实际中较多使用于缓存。

Redis在Linux上安装

Redis是使用C语言开发的,所以在使用时需要编译文件,先安装C语言编译环境。
1)安装redis编译的c环境,yum install gcc-c++

2)将redis-2.6.16.tar.gz上传到Linux系统中

3)解压到/usr/local下 tar -xvf redis-2.6.16.tar.gz -C /usr/local

4)进入redis-2.6.16目录 使用make命令编译redis

5)在redis-2.6.16目录中 使用make PREFIX=/usr/local/redis install命令安装 redis到/usr/local/redis中
安装完成后,在bin下多了几个文件
Redis在linux下安装使用及用Jedis远程连接
6)拷贝redis-2.6.16中的redis.conf到安装目录redis中

7)启动redis 在bin下执行命令redis-server redis.conf

Redis在linux下安装使用及用Jedis远程连接

启动后看到如上欢迎页面,这属于前端启动,此窗口不能关闭,窗口关闭就认为redis也关闭了(类 似Tomcat通过bin下的startup.bat的方式)
解决方案:可以通过修改配置文件 redis.conf 配置redis后台启动,即服务器启动了但不会占用控制台窗口
在 redis.conf文件中添加 daemonize yes 表示后台启动
使用命令查看6379端口是否启动ps -ef | grep redis
Redis在linux下安装使用及用Jedis远程连接

停止Redis程序
强制关闭 kill -9 pid
pid通过ps -ef | grep redis查询
正确停止方法

 cd /usr/local/redis
 ./bin/redis-cli shutdown

Jedis远程连接Redis

远程连接redis,需配置redis端口6379在linux防火墙中开发
linux开放防火墙CentOS 6和CentOS 7是不一样的,参考https://blog.csdn.net/xiao_ma_CSDN/article/details/81915859
如果显示连接失败,redis在3.2之后在redis.conf文件中有protected-mode这个配置,意思是开启了保护模式,可以注释掉或者添加密码在下方requirepass password

测试连接

import redis.clients.jedis.Jedis;
public class JedisTest {
    @Test
    public void test1(){
        //获得连接对象
        Jedis jedis = new Jedis("127.0.0.1",6379);
        jedis.auth("root");
        String name=jedis.get("username");
        System.out.println(name);
    }
}

比JDBC连接MySql要简单得多。

用连接池连接

@Test
    public void test3() {
        // 1.获得连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        // 最大连接数
        config.setMaxTotal(30);
        // 最大空闲连接数
        config.setMaxIdle(10);

        // 2.获得连接池
        JedisPool jp = new JedisPool(config, "47.93.204.33", 6379);
        // 3.获得核心对象
        Jedis jedis = null;
        try {
            jedis = jp.getResource();
            jedis.auth("root");
            // 设置数据
            jedis.set("name2", "lisi");
            // 提取数据
            String name2 = jedis.get("name2");
            System.out.println(name2);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (jedis != null) {
                jedis.close();
            }
            // 虚拟机关闭时释放连接池资源
            if (jp != null) {
                jp.close();
            }
        }
    }
相关标签: Redis