我个人第一次听说Redis时,看的是菜鸟教程:http://www.runoob.com/redis/redis-intro.html
后来,养成的习惯是看博客、知乎这些。那么我这里也来小小赘述一下吧:
一、Redis的简介:
Redis(REmote DIctionary Server)是一个局域key-value键值对的开源的持久化数据库存储系统,常用作缓存或消息队列。支持多种数据结构:string(字符串),list(链表)、set(集合)、zset(有序数组)、hash(哈希类型),这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。Redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中的,它也可以周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
二、为什么要使用NoSQL
NoSQL是以key-value方式存储(如map、json的样子)的,和传统关系型数据库不一样,不一定遵循传统数据库的一些基本要求,比如说遵循SQL标准(select、delete、update、insert,NoSQl中这些操作语句是没有的)、ACID标准、表结构等。这些数据库主要有以下特点:非关系型的、分布式的、开源的、水平可扩展的。
主要特点有:
1、处理超大量的数据上有很大优势;
(1)对数据高并发读写;
(2)对海量数据的高效率存储和访问;
(3)对数据的高可扩展性和高可用性(数据库系统的升级和扩展方便,NoSQL的分布式非常简单,扩充节点,NoSQL没有固定的表结构(数据结构修改容易))。
2、运行在便宜的PC服务器集群上
3、相对Mysql需要很多性能优化,而NoSQl不需要,因为其性能非常高。
三、Java连接Redis
Redisclient支持多种语言,包括:c、C++、C#、PHP、java、Python、Go等语言,根据自己的开发语言,选择合适的redis
client版本类型即可。针对java语言,redis client也提供了多种客户端支持,按照推荐类型依次是:Jedis、Redisson、JRedis、JDBC-Redis、RJC、redis-protocol、aredis、lettuce。前两种类型是比较推荐的,我们采用了Redisson类型版本作为redisclient的使用。
四、入门尝试阶段
代码如下,只是作为简单的入门:
import org.redisson.Config; import org.redisson.Redisson; import java.util.Queue; import java.util.Set; import java.util.concurrent.ConcurrentMap; public class RedisExample { /** * */ public static void main(String[] args){ //1.初始化 Config config = new Config(); config.setConnectionPoolSize(10); config.addAddress("127.0.0.1:6379"); Redisson redisson = Redisson.create(config); System.out.println("redis 连接成功!"); //测试concurrentMap ConcurrentMap<String,Object> map = redisson.getMap("FirstMap1"); map.put("zhangsan","男"); map.put("lisi","男"); map.put("wangwu","女"); ConcurrentMap resultMap = redisson.getMap("FirstMap1"); System.out.println("resultMap = " + resultMap.keySet()); //2、测试集合类 Set mySet = redisson.getSet("FirstSet1"); mySet.add("baidu"); mySet.add("xinlang"); mySet.add("souhu"); mySet.add("wangyi"); Set resultSet = redisson.getSet("FirstSet1"); System.out.println("resultSet = " + resultSet.size()); //3、测试Queue队列 Queue myQueue = redisson.getQueue("FirstQueue1"); myQueue.add("董贞"); myQueue.add("王菲"); myQueue.add("陈奕迅"); myQueue.peek(); myQueue.poll(); Queue resultQueue = redisson.getQueue("FirstQueue1"); System.out.println("resultQueue = " + resultQueue); //关闭连接 redisson.shutdown(); } }
运行,结果如下:
redis 连接成功!
resultMap = [zhangsan, lisi, wangwu]
resultSet = 4
resultQueue = [王菲, 陈奕迅]
Process finished with exit code 0