①.Redis简介
Redis是一个使用C语言编写的key-value开源的NOSQL存储系统。(区别于MySQL的二维表格的形式存储)。
Redis是单线程+多路IO复用技术
②.Redis特点
1、高效性:Redis读取的速度是110000次/s,写的速度是81000次/s
2、原子性:Redis的所有操作都是原子性的,不能再细化的。
3、支持杜仲数据结构:string(字符串);list(列表);hash(哈希),set(集合)
4、稳定性强:支持数据持久化,支持主从结构的数据备份
5、其他:支持数据有效期,支持订阅。
③.Redis适用场景
1、.取最新N个数据的操作
2、取TOP N操作
3、需要精准设定过期时间的场景
4、计数器应用
5、Uniq操作,获取某段时间所有数据排重值
6、Pub/Sub构建实时消息系统
7、缓存数据(缓存的是热数据)
8、构建队列系统
热数据:经常被使用的数据,访问频次较高的数据为热数据。
④.Redis不适用场景
需要事务支持
基于sql的结构化查询存储,处理复杂的关系,需要即席查询
⑤Nosq数据库举例
1、memcache 比较早的Nosq数据库,不持久化,目前适用的很少
2、redis 覆盖了memcache几乎所有功能,支持数据持久化,支持多种数据结构的存储
3、mongoDB 也是key-value模式,对value进行了很多优化,在部分场景中可以取代关系性数据库。
4、hbase海量数据 ,精确查询,快速返回
⑥Redis 安装部署
1、上传安装包,并解压。
2、安装编译需要的环境
yum install -y gcc-c++
yum install -y tcl
3、编译redis( C语言编写的软件需要重新编译 )
make && make install
看到如下表示编译成功
4、修改配置文件
首先创建日志存放路径和数据持久化存储的路径
mkdir -p /export/servers/redis-3.2.8/logs
mkdir -p /export/servers/redis-3.2.8/redisdata
修改配置文件
bind node01
daemonize yes
pidfile /var/run/redis_6379.pid
logfile "/export/servers/redis-3.2.8/logs/redis.log"
dir /export/servers/redis-3.2.8/redisdata
5、启动并验证
./redis-server ../redis.conf
[root@node01 src]# ps -ef |grep redis
root 7472 1 0 01:17 ? 00:00:00 ./redis-server node01:6379
验证
[root@node01 src]# ./redis-cli -h node01
node01:6379> set name zhangsan
node01:6379> keys *
1) "name"
node01:6379> get name
"zhangsan"
node01:6379>
//获取redis连接池
JedisPool jedisPool = new JedisPool("192.168.100.103",6379);
//获取连接对象
Jedis jedis = jedisPool.getResource();
//通过对象调用api
//jedis.set("string9999","233333");
String string9999 = jedis.get("string9999");
System.out.println(string9999);
jedis.close();
//设置数据库连接池
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//设置连接池的最大连接数
jedisPoolConfig.setMaxTotal(50);
//设置最大空闲数量
jedisPoolConfig.setMaxIdle(10);
//设置最大小空闲数量
jedisPoolConfig.setMaxIdle(5);
//连接超时时间(最大等待时间)
jedisPoolConfig.setMaxWaitMillis(30);
//获取redis连接池
JedisPool jedisPool = new JedisPool(jedisPoolConfig,"192.168.100.103", 6379);
//获取连接对象
Jedis jedis = jedisPool.getResource();
//通过对象调用api
String string9999 = jedis.get("string9999");
System.out.println(string9999);
jedis.close();
文章评论