一.Redis概述
Redis 是一个高性能的开源的、C语言写的Nosql(非关系型数据库),数据保存在内存中。
二.特点
1、数据存放:存放到内存中,还能不定期持久化到磁盘。存取速度快,并发能力强,断电后数据不丢失。
2、支持Value类型更多。
3、多种客户端
4、支持集群来扩展空间
5、开源
三.应用场景
3.1 缓存
经常查询数据,放到读速度很快的空间(内存),以便下次访问减少时间。减轻数据库压力,减少访问时间.而redis就是存放在内存中的。
3.2 计数器应用
网站通常需要统计注册用户数,网站总浏览次数等等
新浪微博转发数、点赞数
3.3 实时防攻击系统
例如刷票以及秒杀活动,可以限制单个ip指定时间内的访问次数
3.4 设置有效期
设定一个数据,到一定的时间失效。 自动解锁,购物券
3.5 自动去重
Uniq 操作,获取某段时间所有数据排重值 这个使用 Redis 的 set 数据结构最合适了,只需要不断地将数据往 set 中扔就行了,set 意为 集合,所以会自动排重。
3.6 队列
构建队列系统 使用 list 可以构建队列系统,使用 sorted set 甚至可以构建有优先级的队列系统。
秒杀:可以把名额放到内存队列(redis),内存就能处理高并发访问。限流
四.redis的使用
4.1 Redis 的官方下载站是 http://redis.io/download
4.2 启动redis服务
4.3 4.连接到redis进行操作
cmd>{%redis%}/redis-cli -h ip地址 -p 端口号
ip 默认为本地 -p 默认6379
redis-cli -h 172.16.6.248 -p 6379
cmd>{%redis%}/redis-cli
4.3.5 redis的使用
参考redis命令参考手册
五.在java中操作redis,这种操作被称为jedis
5.1 导包
5.2 配置文件
@Test
public void testJedis() throws Exception {
Jedis jedis=new Jedis();
//设置了密码的情况
//jedis.auth(password);
jedis.set("name", "xxx");
String name = jedis.get("name");
System.out.println(name);
jedis.close();
}
@Test
public void testJedisPool() throws Exception {
JedisPool jedisPool=new JedisPool();
//设置了密码的情况
//JedisPool jedisPool=new JedisPool(poolConfig, host, port, timeout, password);
Jedis jedis = jedisPool.getResource();
jedis.lpush("list", "zs","ls","ww");
List<String> list = jedis.lrange("list", 0, -1);
System.out.println(list);
jedisPool.destroy();
}
@Test
public void testJedisSort() throws Exception {
JedisPool jedisPool=new JedisPool();
Jedis jedis = jedisPool.getResource();
SortingParams sortingParameters=new SortingParams();
//sortingParameters.asc();默认正序
sortingParameters.desc();
List<String> list2 = jedis.sort("list2", sortingParameters);
System.out.println(list2);
jedisPool.destroy();
}