一、 redis的简介和下载安装
redis是C语言
开发的, redis基于内存的数据库,数据存储到了内存当中。
数据的存储是以KEY-VALUE
的形式来存储,redis中也是有丰富的数据类型。
redis安装工具下载地址:https://pan.baidu.com/s/1OP7UhCkUYOxqsFeQr3VyiA 提取码:7xn9
安装过程基本不需要做任何修改,全部默认即可。
二、 redis的特点
1、redis的读写效率非常高: 读 11万/s
写 8万/s
2、redis中提供了丰富的数据类型: 五种 String
hash
list
set
sortedSet
注意: redis中数据类型指的是value的数据类型,而key只有String
三、redis的常用数据类型的使用
0、入门程序
jedis就是一款java连接redis的客户端工具, jedis中操作API与redis中命令是一样的,大大降低了学习成本,jedis也是redis官方推荐的一款java客户端工具。
如果想jedis, 就需要先进行导包:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
入门程序:
@Test
public void testPing(){
//新建连接,127.0.0.1指的是本机,6379指的是端口号
Jedis jedis = new Jedis("127.0.0.1",6379);
String pong = jedis.ping();
System.out.println(pong);
jedis.close();
}
如果你打印输出的结果如下,那么久说明你已经完成了入门程序了。
PONG
1、String,和java中String是类似的, 表示字符串
使用场景: 做缓存、计数器、点赞
演示案例:
@Test
public void testJedisForString(){
//新建连接,127.0.0.1指的是本机,6379指的是端口号
Jedis jedis = new Jedis("127.0.0.1",6379);
//存值、取值操作
jedis.set("count","10");
String count = jedis.get("count");
System.out.println("count的值为:"+count);
//增一、减一操作
Long incr = jedis.incr("count");
System.out.println("count增一后的值为:"+incr);
Long decr = jedis.decr("count");
System.out.println("count减一后的值为:"+decr);
//设置count的存活时间为20s,到期自动销毁
jedis.expire("count", 60);
//删除操作
jedis.del("count");
jedis.close();
}
打印输出结果如下:
count的值为:10
count增一后的值为:11
count减一后的值为:10
2、list:和 java中linkedList类似,看做一个队列(FIFO)
使用场景: 模拟队列、栈、朋友圈点赞
演示案例:
@Test
public void testJedisForList(){
//新建连接,127.0.0.1指的是本机,6379指的是端口号
Jedis jedis = new Jedis("127.0.0.1",6379);
//从左侧添加元素,从右侧弹出一个元素
jedis.lpush("list","a","b","c","d");
String rpop = jedis.rpop("list");
System.out.println("从list右侧弹出的元素是:"+rpop);
//遍历list集合
List<String> list = jedis.lrange("list", 0, -1);
System.out.println("list集合元素遍历结果:"+list);
//获取列表的个数
Long len = jedis.llen("list");
System.out.println("list集合元素个数:"+len);
//从右侧弹出一个元素, 将弹出在从左侧添加回去
jedis.rpoplpush("list","list");
list = jedis.lrange("list", 0, -1);
System.out.println("list再一次遍历的结果:"+list);
jedis.close();
}
打印输出结果如下:
从list右侧弹出的元素是:a
list集合元素遍历结果:[d, c, b]
list集合元素个数:3
list再一次遍历的结果:[b, d, c]
3、set:和java中set集合类型: 去重 无序
使用场景: 去重操作、抽奖
演示案例:
@Test
public void testJedisForSet(){
//新建连接,127.0.0.1指的是本机,6379指的是端口号
Jedis jedis = new Jedis("127.0.0.1",6379);
//添加数据
jedis.sadd("set","q","w","e","r","e");
//获取set集合所有的元素
Set<String> set = jedis.smembers("set");
System.out.println("set集合内元素:"+set);
//判断中w是否存在
Boolean flag = jedis.sismember("set", "w");
System.out.println("set集合中是否存在该元素:"+flag);
//获取set集合中数量
Long len = jedis.scard("set");
System.out.println("set集合中元素的个数:"+len);
jedis.close();
}
打印输出结果如下:
set集合内元素:[r, e, w, q]
set集合中是否存在该元素:true
set集合中元素的个数:4