Redis在linux下安装使用及用Jedis远程连接
Redis属于NoSql(not only sql)数据库,NoSql意思是“不仅仅是sql”,指非关系型数据库。
NoSql
随着网站访问量的提升,特别是超大规模高并发的网站,传统关系型数据库在处理请求时暴露出了很多问题,其中包括对于数据库高并发读写的需求,对海量数据高效存储和访问的需求,对数据库可扩展性的需求,这些问题对于关系型数据库是无法解决的。NoSql型数据库的产生就是为了解决大数据问题。
NoSql的特点
- 易扩展
NoSql数据库数据之间无关系,比如没有关系型数据库中的外键之类,这样非常容易扩展。 - 大数据量,高性能
NoSql数据库结构简单,读写性能非常高。 - 灵活的数据模型
NoSql无需为存储的数据建立字段,然而在关系数据库中增删字段非常麻烦。 - 高可用
可以方便实现高可用框架,比如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下多了几个文件
6)拷贝redis-2.6.16中的redis.conf到安装目录redis中
7)启动redis 在bin下执行命令redis-server redis.conf
启动后看到如上欢迎页面,这属于前端启动,此窗口不能关闭,窗口关闭就认为redis也关闭了(类 似Tomcat通过bin下的startup.bat的方式)
解决方案:可以通过修改配置文件 redis.conf 配置redis后台启动,即服务器启动了但不会占用控制台窗口
在 redis.conf文件中添加 daemonize yes
表示后台启动
使用命令查看6379端口是否启动ps -ef | grep redis
停止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();
}
}
}
上一篇: 增删改查--直接操作的数据库
下一篇: EditPlus配置编译运行Java程序