目录
一、Redis简介
二、Redis安装
1、下载地址
2、安装与启动
三、Redis可视化工具安装
四、Redis的简单命令
五、Redis的java使用
1、添加依赖
2、创建service测试类
3、启动测试
参考文档
Redis 教程 | 菜鸟教程
一、Redis简介
略
二、Redis安装
1、下载地址
Redis下载地址
redis安装包64位,windows-其它文档类资源-CSDN下载
RedisClient下载地址
Redis可视化工具RedisClient-其它文档类资源-CSDN下载
2、安装与启动
下载Redis安装包,地址在文章开头。
将安装包解压到对应目录
打开解压的目录,在上方地址栏输入cmd进入命令窗口
在命令窗口输入redis-server.exe redis.windows.conf并回车,显示以下界面则启动成功
注意,想要使用Redis,请不要关闭此窗口
三、Redis可视化工具安装
下载RedisClient安装包,地址在文章开头。
将RedisClient安装包解压到对应目录
进入安装目录并点击 redisclient-win32.x86.1.0.exe可启动可视化工具
创建一个库
?
四、Redis的简单命令
五、Redis的java使用
1、添加依赖
查看pom.xml文件中有没有如下依赖,没有则添加
<!--Springboot配置Redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.1.1</version>
</dependency>
2、创建service测试类
ServiceA0006.java文件内容
package com.jicr.springboottest.service;
public interface ServiceA0006 {
String serviceImpl();
}
ServiceA0006Impl.java文件内容
package com.jicr.springboottest.service.serviceImpl;
import com.jicr.springboottest.service.ServiceA0006;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisMonitor;
import redis.clients.jedis.params.SortingParams;
import java.util.List;
import java.util.Set;
@Log4j2
@Service
public class ServiceA0006Impl implements ServiceA0006 {
@Override
public String serviceImpl() {
Jedis jedis = new Jedis();
try {
//连接Redis数据库
jedis = medConnRedis();
//字符串String
medString(jedis);
//列表List
medList(jedis);
//集合Set
medSet(jedis);
//有序集合sorted set
medSortedSet(jedis);
//哈希Hash
medHash(jedis);
//其他方法
medOther(jedis);
}catch (Exception e){
e.printStackTrace();
}finally {
// 关闭连接
jedis.close();
}
return null;
}
/**
* 其他方法
* @param jedis redis对象
*/
public void medOther(Jedis jedis) {
jedis.quit();//关闭连接
jedis.auth("");//密码验证
jedis.save(); //将数据同步保存到磁盘
jedis.bgsave(); //将数据异步保存到磁盘
jedis.lastsave(); //返回上次成功将数据保存到磁盘的Unix时戳
jedis.shutdown(); //将数据同步保存到磁盘,然后关闭服务
jedis.info(); //提供服务器的信息和统计
jedis.monitor(new JedisMonitor() {
@Override
public void onCommand(String command) {
}
}); //实时转储收到的请求
jedis.slaveof("localhost",8088); //改变复制策略设置
jedis.configSet("",""); //在运行时配置Redis服务器
jedis.exists("key1");//判断是否存在(返回类型boolean)
jedis.type("key1");//返回值类型
jedis.dbSize();//返回当前库中key的数量
jedis.expire("key1", 60);//设置有效时间为60秒,过期则自动删除
jedis.ttl("key1");//查看剩余有效时间,返回-1:未设置有效时间,永久有效;返回-2:key不存在
jedis.persist("key1");//移除设置的有效时间
jedis.rename("key1", "key1_new");//修改键名
jedis.select(2);//按索引查询
jedis.flushDB();//清空当前数据库数据
jedis.flushAll();//清空所有数据库数据
jedis.set("key", "value");//给数据库中名称为key的string赋予值value
jedis.get("key");//返回数据库中名称为key的string的value
jedis.getSet("key", "value");//给名称为key的string赋予上一次的value
jedis.mget("key1", "key2","key3");//返回库中多个string的value
jedis.setnx("key", "value");//添加string,名称为key,值为value
jedis.setex("key", 60, "value");//向库中添加string,设定过期时间time
jedis.msetnx("key1", "val1","key2","val2");//当所有 key 都成功设置,返回 1 。 如果所有给定 key 都设置失败(至少有一个 key 已经存在),返回 0
jedis.incr("key");//将 key 中储存的数字值增一
jedis.incrBy("key", 3);//将 key 所储存的值加上给定的增量值
jedis.decr("key");//将 key 中储存的数字值减一
jedis.decrBy("key", 3);//key 所储存的值减去给定的减量值
}
/**
* Redis集合Hash
* @param jedis redis对象
*/
private void medHash(Jedis jedis) {
log.info("Redis集合Hash");
log.info("------------增------------");
jedis.hset("hashKey","key1","val1");//单个
jedis.hincrBy("hashKey","key2", 4L);//整型
log.info("------------查------------");
jedis.hvals("hashKey");//查所有
jedis.hexists("hashKey","key1");//判断是否存在
jedis.hget("hashKey","key1");//查询单个的值
jedis.hmget("hashKey","key1","key2");//查询多个值
jedis.hkeys("hashKey");//查询所有键
jedis.hvals("hashKey");//查询所有值
log.info("------------改------------");
jedis.hincrBy("hashKey","key2", 2L);//整型值增加
log.info("------------删------------");
jedis.hdel("hashKey","key1");//单个删除
jedis.hdel("hashKey","key2","key3");//批量删除
}
/**
* 有序集合sorted set
*
* @param jedis redis对象
*/
private void medSortedSet(Jedis jedis) {
log.info("redis有序集合sorted set");
log.info("------------增------------");
jedis.zadd("zsetKey",2.0,"val1");//单个添加,参数分别为集合名,权重,值,按照权重排序
log.info("------------查------------");
jedis.zrange("zset", 0, -1);//查询所有值,按照权重排序
jedis.zcard("zsetKey");//集合长度
jedis.zcount("zsetKey",1.0,8.0);//权重范围内元素个数
jedis.zscore("zsetKey","val1");//查看元素权重
jedis.zrange("zsetKey",1,3);//查询下标1到3的元素
log.info("------------改------------");
jedis.rename("zsetKey","zsetKeyNew");
log.info("------------删------------");
jedis.zrem("zsetNew","val1");//删除单个
jedis.zrem("zsetKeyNew","val1","val2");//删除多个
}
/**
* 集合Set
*
* @param jedis redis对象
*/
public void medSet(Jedis jedis) {
log.info("redis集合Set");
log.info("------------增------------");
jedis.sadd("setKey","val1");//单个
jedis.sadd("setKey","val1","val2","val3","val4","val5","val6");//多个值,无序不重复
log.info("------------查------------");
jedis.smembers("setKey");//查所有值
Set<String> set = jedis.smembers("setKey");//循环所有值
for (Object obj : set) {
log.info(obj);
}
jedis.sinter("setKey1", "setKey2");//两集合交集
jedis.sunion("setKey1", "setKey2");//两集合并集
jedis.sdiff("setKey1", "setKey2");//两集合差集,setKey1-setKey2
log.info("------------改------------");
jedis.rename("setKey","setKey1");//修改集合名字
log.info("------------删------------");
jedis.srem("setKey1","val1");//删除单个
jedis.srem("setKey1","val2","val3");//删除多个
jedis.spop("setKey1");//集合出栈,由于是无序,所以出栈元素随机,无实际意义
}
/**
* 列表List
*
* @param jedis redis对象
*/
public void medList(Jedis jedis) {
log.info("redis列表List");
log.info("------------增------------");
//从前往后新增,越后新增的下标越小
jedis.lpush("listName","val1");//单个
jedis.lpush("listName", "val2", "val3", "val4", "val5", "val6", "val6","val6","val6");//多个 可重复
log.info("------------查------------");
long len=jedis.llen("listName");//list长度
List<String> listName = jedis.lrange("listName", 0, len-3);//查询指定下标区域的值并存储到List集合中
List<String> listsName = jedis.lrange("listName",0,-1);//查询所有值并存储到List集合中
log.info("list区域值:"+listName);
log.info("list所有值:"+listsName);
//list排序
SortingParams sortingParameters = new SortingParams();
sortingParameters.alpha();
sortingParameters.limit(0, (int) len);
log.info("list排序sortingParameters:"+jedis.sort("listName",sortingParameters));
log.info("------------改------------");
jedis.lset("listName",5,"val4_new");//改指定下标
log.info("------------删------------");
jedis.lrem("listName",2,"val6");//删除指定值,第二个参数为删除的个数(有重复的话),先删除后新增到list的的。
jedis.ltrim("listName",0,jedis.llen("listName")-2);// 删除区间以外的数据
jedis.lpop("listName");//出栈一个元素,即删除下标为0的元素
}
/**
* 字符串String
*
* @param jedis redis对象
*/
public void medString(Jedis jedis) {
log.info("redis字符串String");
log.info("------------增------------");
jedis.set("key1", "val1");//单个
jedis.mset("key2", "val2","key3","val3","key4","val4","key5","val5","key6","val6");//多个
log.info("------------查------------");
jedis.get("ele01");//单个
jedis.mget("key1","key2","key3");//多个
log.info("------------改------------");
jedis.set("key1","val1_new");//直接覆盖
jedis.set("key2","val2_new");//追加
jedis.rename("key3","key3_new");//改键名
log.info("------------删------------");
jedis.del("key4");//单个
jedis.del("key5","key6");//多个
}
/**
* 连接数据库
*/
public Jedis medConnRedis() {
// 连接Redis数据库
Jedis jedis = new Jedis("localhost", 6379);
// jedis.auth("password"); //如果需密码
log.info("连接成功");
//查看服务是否运行
log.info("服务正在运行: " + jedis.ping());
return jedis;
}
}
class testMain {
public static void main(String[] args) {
ServiceA0006Impl serviceA0006=new ServiceA0006Impl();
serviceA0006.medConnRedis();
Jedis jedis = new Jedis();
serviceA0006.medSet(jedis);
}
}
3、启动测试
在controller中添加方法启动项目,然后使用postman发送请求进行测试。或者写main方法测试。
|