Redis 介绍
Redis是REmote DIctionary Server(远程字典服务器)的缩写,它以字典结构(key-value键值对结构)存储数据,并允许其他应用通过TCP协议读写字典中的内容。所以,redis是一个key-value存储系统,或者说是一个key-value数据库。Redis是用C语言开发的,并提供了几十种不同编程语言的客户端库,即我们用java语言也可以操作redis。这种字典形式的存储结构与常见的MySQL 等关系数据库的二维表形式的存储结构有很大的差异。关系型数据库存储的数据都是结构化数据Redis字典结构(k-v)的存储方式使得开发者可以将程序中的数据直接映射到Redis中,数据在Redis中的存储形式和其在程序中的存储方式非常相近。使用Redis的另一个优势是其对不同的数据类型提供了非常方便的操作方式,如使用集合类型存储文章标签,Redis可以对标签进行如交集、并集这样的集合运算操作。Redis存储数据的介质是内存,所以可以提供高效的读取。所以,redis数据库,我们也称之为非关系型数据库(Nosql)。而mysql,oracle等数据库称之为关系型数据库。这两种类型的数据库,没有优劣之分,看具体的应用场景。
Redis的内存存储和持久化Redis数据库中的所有数据都存储在内存中。由于内存的读写速度远快于硬盘,因此Redis在性能上对比其他基于硬盘存储的数据库有非常明显的优势,在一台普通的笔记本电脑上,edis可以在一秒内读写超过十万个键值。将数据存储在内存中也有问题,例如,程序退出后内存中的数据会丢失。不过 Redis提供了对持久化的支持,即将可以内存中的数据异步写入到硬盘中,同时不影响继续提供服务。
实现步骤:
1.下载Jedis依赖jar包2.在maven工程里,建立测试类3.调用Jedis的API/*
* 测试连接和插值 * 注意:1.关闭虚拟机的防火墙或代开指定的端口,比如6379 */ @Test public void testConnect_Set(){ Jedis jedis=new Jedis("192.168.234.231", 6379); jedis.set("name","tom"); jedis.close(); }/*
* 测试利用Jedis实现Redis的分片,底层用的是一致性hash算法来实现的。 * 所以可以更好的满足数据的单调性和平衡性 * */ @Test public void testShard(){ JedisPoolConfig config=new JedisPoolConfig(); List<JedisShardInfo> serverList=new ArrayList<>(); serverList.add(new JedisShardInfo("192.168.234.231",6379)); serverList.add(new JedisShardInfo("192.168.234.231",6380)); ShardedJedisPool pool=new ShardedJedisPool(config, serverList); ShardedJedis jedis=pool.getResource(); for(int i=0;i<1000;i++){ jedis.set(i+"",i+""); } //用完后将jedis 连接还到池子 pool.returnResource(jedis);}
}
1 /** 2 * 测试利用Jedis操作redis服务 3 * @author 4 * 5 */ 6 public class redis{ 7 /* 8 * 测试连接和插值 9 * 注意:1.关闭虚拟机的防火墙或代开指定的端口,比如637910 */11 @Test12 public void testConnect_Set(){13 Jedis jedis=new Jedis("192.168.234.231", 6379);14 jedis.set("name","tom"); 15 16 jedis.close();17 }18 19 /*20 * 测试利用Jedis实现Redis的分片,底层用的是一致性hash算法来实现的。21 * 所以可以更好的满足数据的单调性和平衡性22 * 23 */24 @Test25 public void testShard(){26 JedisPoolConfig config=new JedisPoolConfig();27 28 ListserverList=new ArrayList<>();29 30 serverList.add(new JedisShardInfo("192.168.234.231",6379));31 serverList.add(new JedisShardInfo("192.168.234.231",6380));32 33 ShardedJedisPool pool=new ShardedJedisPool(config, serverList);34 35 ShardedJedis jedis=pool.getResource();36 37 for(int i=0;i<1000;i++){38 jedis.set(i+"",i+"");39 }40 //用完后将jedis 连接还到池子41 pool.returnResource(jedis);42 43 }44 45 }