redis介绍、单机安装以及java调用
什么是redis
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。和传统的关系型数据库不一样,不一定遵循传统数据库的一些基本要求(非关系型的、分布式的、开源的。水平可扩展的)。
优点:
对数据高并发读写
对海量数据的高效率存储和访问
对数据的可扩展性和高可用性
缺点:
redis (对事务的处理非常简单)
无法做到太复杂的关系数据库模型
Redis是以key-value store 存储,data structure service 数据结构服务器。键可以包含:(string)字符串,哈希,(list)链表,(set)集合,(zset)有序集合。这些数据集合都支持push/pop、add/remove及取交集和并集以及更丰富的操作,redis支持各种不同的方式排序,为了保证效率,数据都是缓存在内存中,它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加到文件记。
redis的应用场景
缓存(数据查询、短连接、新闻内容、商品内容等等)。(最常见的应用场景)
分布式集群架构中的session分离。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过期处理(可以精确到毫秒)
Redis的安装
redis是C语言开发, 安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc,安装命令是:yum install gcc-c++
1、redis下载:http://download.redis.io/releases/redis-3.2.8.tar.gz
2、将redis-3.2.8.tar.gz拷贝到/home目录下
3、解压: tar -zxvf redis-3.2.8.tar.gz
4、进入解压后的目录进行编译
cd /home/redis-3.2.8
make
5、进入到src下进行安装:make install
6、创建两个文件夹存放redis的命令和配置文件
mkdir -p /home/redis/bin
mkdir -p /home/redis/etc
7、把redis-3.2.8下的redis.conf移动到/home/redis/etc
8、把redis-3.2.8/src中的mkreleasehdr.sh、redis-benchmark、redis-check-aof、redis-cli、redis-server移动到/home/redis/bin目录下,命令:
mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server /home/redis/bin
9、启动时需要指定配置文件:
./bin/redis-server etc/redis.conf
10、出现下图所示表示redis启动成功
11、若要将redis改成后台启动,需要修改redis.conf配置文件,将daemonize的值改为yes
通过jedis连接redis单机
1、依赖的jar包:
commons-pool2-2.4.2.jar
jedis-2.9.0.jar
2、通过创建jedis对象,连接redis服务,代理如下:
public static void testJedisSingle() {
Jedis jedis = new Jedis("192.168.2.120", 6379);//创建jedis对象
jedis.set("name", "zhangsan");//设置数据
String name = jedis.get("name");//获取数据
System.out.println(name);
jedis.close();//关闭连接
}
注:外部链接连接redis失败的解决办法。一般情况下出现这种情况是因为防火墙,将防火墙关闭或者将6379端口加到防火墙中。
3、使用连接池连接redis,代码如下:
public static void redisPool() {
JedisPoolConfig config = new JedisPoolConfig();
//最大连接数
config.setMaxTotal(30);
//最大连接空闲数
config.setMaxIdle(2); JedisPool pool = new JedisPool(config, "192.168.2.120", 6379);
Jedis jedis = null; try {
jedis = pool.getResource();
jedis.set("name", "lisi");
String name = jedis.get("name");
System.out.println(name);
}catch(Exception ex){
ex.printStackTrace();
}finally{
if(jedis != null){
//关闭连接
jedis.close();
}
}
}
最新文章
- SQLMAP源码分析-目录结构
- Spring的qualifier标签
- FastJson之有道翻译
- java post 请求
- unsupported dynamic reloc R_ARM_REL32 AND hidden symbol '__dso_handle' is not defined
- WPF之监听组合键事件
- GOOGLE搜索從入門到精通V4.0
- iOS远程消息推送自我整理版
- 51nod1119(除法取模)
- 第一行代码_activity生命周期
- java程序与编译
- Unity GameObject Class
- 小细节,大用途,35 个 Java 代码性能优化总结!
- Java基础(运算符)
- #004 C语言大作业学生管理系统试着做
- Linux安装 centos 7 最小化 安装
- Windows安装Anaconda出现failed to create menus
- Shell脚本应用(for、while循环语句和case分支语句)
- 机器学习 之k-means和DBSCAN的区别
- [蓝桥杯ALGO-53.算法训练_最小乘积(基本型)
热门文章
- MFC对话框常用操作文章收藏
- IntelliJ IDEA 2017.3尚硅谷-----省电模式
- 图像滤波—opencv函数
- 第三十四篇 玩转数据结构——哈希表(HashTable)
- DBContext基础查询
- log设计网站,一站式一键设计log网站
- rancher三节点k8s集群部署例子
- Codeforces Round #525 (Div. 2) C. Ehab and a 2-operation task 数学 mod运算的性质
- Java实现JSONObject对象与Json字符串互相转换
- Oracle 11G在用EXP 导入、导出时,若有空表对导入导出中遇到的问题的解决