系列文章
java Redis实战
很多人,可能看过Redis相关的教程,或者书籍,知道了一些关于Redis的基础知识,但是也只是了解了Redis是什么,但是并没有在实际的编写代码的过程中使用到Redis,现在就跟随者我的步伐,进入到Redis实战中吧。
基础回顾
Redis的数据类型
Redis支持五种数据类型,分别是:String、Hash、List、Set以及Zset
String
是redis中的最基本的数据类,可以理解成和Memcached(一套分布式的高速缓存系统)一模一样的类型,一个key对应一个value
是二进制安全的,即可以包含任何数据,比如jpg图片或者序列化的对象,一个键可以最大存储512MB
set a “b”
get a
Hash
Redis hash是一个键名对集合,也是一个string类型的field和value的映射表,hash特别适合用于存储对象
hmset users:1 userage 18 username zhonghu
hgetall user : 1
List
Redis的列表是简单的字符串列表,按照插入顺序排列,可以添加一个元素到列表的头部或尾部
Lpush 插入
Lrange 查看
Set
Redis的Set是无序集合,集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)
sadd:添加一个String元素到key对应的set集合中,成功返回1已存在返回0 key对应的set不存在返回错误
smembers 查看
Zset
Redis的Zset是string类型的有序集合,不允许重复的成员,每个元素都会关联一个double类型的分数
zset的成员是唯一的,但是分数(score)却可以重复
在java中使用redis
引入redis驱动包:
或者在maven中直接引入
<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
测试服务连接
首先引入jar包:
import redis.clients.jedis.Jedis;
通过ping命脉测试服务状态
public class RedisTest {
public static void main(String[] args) {
// 连接到笨的的redis服务
Jedis jedis = new Jedis("127.0.0.1");
System.out.println("连接成功");
System.out.println("服务器正在运行"+jedis.ping());
}
}
结果:
存储数据
import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
public class RedisTest {
public static void main(String[] args) {
// 连接到笨的的redis服务
Jedis jedis = new Jedis("127.0.0.1");
System.out.println("连接成功");
System.out.println("服务器正在运行"+jedis.ping());
// 设置redis 字符串数据
jedis.set("name","zhonghu");
System.out.println("redis 存储的字符串为:"+jedis.get("name"));
System.out.println("============================================");
// 设置redis list数据
jedis.lpush("list","redis");
jedis.lpush("list","java");
jedis.lpush("list","zhonghu");
// 获取存储的数据并输出
List<String> list = jedis.lrange("list",0,2);
for(String i:list){
System.out.println(i);
}
System.out.println("============================================");
// 设置redis set数据
jedis.sadd("set","hello");
jedis.sadd("set","world");
jedis.sadd("set","zhonghu");
// 获取数据并输出
Set<String> keys=jedis.smembers("set");
// 定义迭代器输出
Iterator<String> it = keys.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
结果