redis初入

Redis (nosql型数据库)(非关系型数据库)(键值key-value存储数据库)(单线程,避免了线程安全问题)

底层采用了 IO多路复用(NIO思想)因此性能优秀。

Redis提供了五种数据类型来存储值。

官方命令大全网址:http://www.redis.cn/commands.html

  • 字符串类型(String)
  • 散列类型(hash)

hash 类型也叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。

 

  • 列表类型(list)

Redis 的列表类型( list 类型)可以 存储一个有序的字符串列表 ,常用的操作是向列表两端添加元素,或者获得列表

的某一个片段。

列表类型内部是使用双向链表( double linked list )实现的,所以向列表两端添加元素的时间复杂度为

0(1) ,获取越接近两端的元素速度就越快。这意味着即使是一个有几千万个元素的列表,获取头部或尾部的10条记录也是极快的。

  • 集合类型(set)

set 类型即集合类型,其中的数据是不重复且没有顺序。

  • 有序集合类型(sortedset,zset)

在 set 集合类型的基础上,有序集合类型为集合中的每个元素都 关联一个分数 ,这使得我们不仅可以完成插入、删除和判断元素是否存在在集合中,还能够获得分数最高或最低的前N个元素、获取指定分数范围内的元素等与分数有关的操作。

set和zset的相同点

1、二者都是有序的。 

2、二者都可以获得某一范围的元素。 

set和zset的不同点

1、列表类型是通过链表实现的,获取靠近两端的数据速度极快,而当元素增多后,访问中间数据的速度会变慢。 

2、有序集合类型使用散列表实现,所有即使读取位于中间部分的数据也很快。 

3、列表中不能简单的调整某个元素的位置,但是有序集合可以(通过更改分数实现) 

4、有序集合要比列表类型更耗内存。

Redis的应用场景

内存数据库(登录信息、购物车信息、用户浏览记录等)

缓存服务器(商品数据、广告数据等等)(最多使用)

解决分布式集群架构中的 session 分离问题( session 共享)

任务队列(秒杀、抢购、12306等等)

分布式锁的实现

支持发布订阅的消息模式

应用排行榜(有序集合)

网站访问统计

数据过期处理(可以精确到毫秒) 

Java jedis连接redis

1、添加依赖

<dependency> 
<groupId>redis.clients</groupId> 
<artifactId>jedis</artifactId> 
<version>2.9.0</version> 
</dependency>

2、连接redis

//单实例连接
@Test 
public void testJedis() 
{ 
//创建一个Jedis的连接 
Jedis jedis = new Jedis("127.0.0.1", 6379); 
//执行redis命令 
jedis.set("mytest", "hello world, this is jedis client!"); 
//从redis中取值 
String result = jedis.get("mytest"); 
//打印结果 
System.out.println(result); 
//关闭连接 
jedis.close(); 
}

连接池连接
@Test 
public void testJedisPool() 
{ 
//创建一连接池对象 
JedisPool jedisPool = new JedisPool("127.0.0.1", 6379); 
//从连接池中获得连接 
Jedis jedis = jedisPool.getResource(); 
String result = jedis.get("mytest") ;
 System.out.println(result); 
//关闭连接 
jedis.close(); 
//关闭连接池 
jedisPool.close(); 
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值