Redis的基本使用(基于maven和spring)
使用redis基本测试
maven导包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
基本连接
public static void main(String[] args) {
// 连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
System.out.println("连接成功");
// 查看服务是否运行
System.out.println("服务正在运行: " + jedis.ping());
}
存入string类型的值
public static void main(String[] args) {
// 连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
//使用字符串string存值
jedis.set("城市", "南京");
}
在图形化redis客户端可以看到,存值成功
string类型取值
Jedis jedis = new Jedis("localhost");
String city = jedis.get("城市");
存入list集合类型的值
public static void main(String[] args) {
// 连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
//使用字符串list存值
jedis.lpush("城市", "南京");
jedis.lpush("城市", "上海");
jedis.lpush("城市", "苏州");
jedis.lpush("城市", "北京");
jedis.lpush("城市", "南通");
}
图形化界面展示效果
list集合取值
public static void main(String[] args) {
// 连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
//list集合取值,这里注意的是,100的位置是结束的角标,如果大了没事,小了的话就会缺
List<String> arr = jedis.lrange("城市", 0, 100);
System.out.println(arr.size());
for (String string : arr) {
System.out.println(string);
}
}
存入Map的值
map类型存值又叫Redis hash ,是一个string类型的field和value的映射表
public static void main(String[] args) {
//连接本地的jedis服务器
Jedis jedis=new Jedis("localhost"); //Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
//这里要求的是map必须是key和value都是string类型的
Map<String, String> map=new HashMap<>();
map.put("name", "小明");
map.put("age", "13");
map.put("sex", "男");
map.put("height", "174"); //调用jedis的hmset(存入hash map)的方法将map的键值对存进去
jedis.hmset("people", map);
}
图形化客户端界面显示为:
map取值
public static void main(String[] args) {
//连接本地的jedis服务器
Jedis jedis=new Jedis("localhost"); //新建一个string类型的数组,用于存当时存入redis的map的key值
String[] arr=new String[4];
arr[0]="name";
arr[1]="age";
arr[2]="sex";
arr[3]="height";
//利用jedis的hmget方法,从数据库中依次取出对应的map的key值
List<String> list = jedis.hmget("people",arr);
for (int i = 0; i < arr.length; i++) {
System.out.println("存入键值对为:"+arr[i]+"--"+list.get(i));
} }
结果为:
存入键值对为:name--小明
存入键值对为:age--13
存入键值对为:sex--男
存入键值对为:height--174
存入Set的值
Redis的Set是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
存入代码:
public static void main(String[] args) {
//连接本地的jedis服务器
Jedis jedis=new Jedis("localhost"); //使用list存入数据
List<String> list=new ArrayList<>();
list.add("北京");
list.add("南京");
list.add("上海");
list.add("北京");
list.add("北京");
list.add("上海");
list.add("苏州");
list.add("南京");
//打印源数据
System.out.println("源数据为"+list); //因为jedis的sadd的方法,存入的是一个数组对象或者多数据,所有将集合对象转换成数组对象
String[] arr=new String[list.size()];
for (int i = 0; i < arr.length; i++) {
arr[i]=list.get(i);
}
//调用sadd方法存入数据库
jedis.sadd("city", arr); }
原来数据为:
源数据为[北京, 南京, 上海, 北京, 北京, 上海, 苏州, 南京]
redis数据库图形化客户端显示
可见,存入后,是把数据去重之后存储的.
set数据的取出
public static void main(String[] args) {
//连接本地的jedis服务器
Jedis jedis=new Jedis("localhost"); //调用jedis的smembers方法,获取所有的set集合
Set<String> smembers = jedis.smembers("city"); System.out.println(smembers);
}
控制台结果为:
[北京, 上海, 南京, 苏州]
存入sortset的值
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。
存入代码:
public static void main(String[] args) {
//连接本地的jedis服务器
Jedis jedis=new Jedis("localhost"); Map<String, Double> map=new HashMap<>();
map.put("北京", 1.0);
map.put("北京", 2.0);
map.put("南京", 3.0);
map.put("上海", 4.0);
map.put("上海", 5.0);
map.put("南京", 6.0); //调用jedis的zadd方法存入
jedis.zadd("city", map);
}
图形化客户端界面:
南京在放入map时候,是在上海之前,可是最后score却取的是后面的一个.可见,如果有重复的数据产生的话,去重是将前面序号的重复去掉
取出代码:
public static void main(String[] args) {
//连接本地的jedis服务器
Jedis jedis=new Jedis("localhost"); //索引在0,到10之间的,分数由高到底的取出所有的集合
Set<String> zrevrange = jedis.zrevrange("city", 0, 10);
System.out.println(zrevrange); }
控制台输出:
[南京, 上海, 北京]
使用redis的基于spring测试
使用spring整合
applicationContext.xml中配置
名称空间:
xmlns:cache="http://www.springframework.org/schema/cache"
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd">
配置文件:
<!-- spring管理redis缓存管理器 -->
<bean id="redisCacheManager" class="org.springframework.data.redis.cache.RedisCacheManager">
<constructor-arg index="0" ref="redisTemplate" />
</bean> <cache:annotation-driven cache-manager="redisCacheManager" /> <!-- jedis 连接池配置 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxIdle" value="300" />
<property name="maxWaitMillis" value="3000" />
<property name="testOnBorrow" value="true" />
</bean> <!-- redis的连接工厂 -->
<bean id="connectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:host-name="localhost" p:port="6379" p:pool-config-ref="poolConfig"
p:database="0" /> <!-- spring data 提供 redis模板 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="keySerializer">
<bean
class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="valueSerializer">
<bean
class="org.springframework.data.redis.serializer.StringRedisSerializer">
</bean>
</property>
</bean>
在需要使用的service类中,使用注解
//自动注入redis模板
@Autowired
private RedisTemplate<String, String> redisTemplate;
使用spring整合string类型的值
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RedisTest { @Autowired
private RedisTemplate<String, String> redisTemplate; @Test
public void Test01(){
//通过模板,获取到String类型的redis对象
ValueOperations<String, String> redisString = redisTemplate.opsForValue(); //使用set方法,保存key和value的值
redisString.set("city", "南京"); //使用get(key)的方法获取到city对应的值
String string = redisString.get("city");
System.out.println(string);
} }
图形化界面:
控制台输出:
使用spring整合list类型的值
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RedisTest { @Autowired
private RedisTemplate<String, String> redisTemplate; @Test
public void Test01(){ //通过模板获取list类型的redis
ListOperations<String, String> redisList = redisTemplate.opsForList(); //通过key依次插入数据
redisList.leftPush("city", "南京");
redisList.leftPush("city", "上海");
redisList.leftPush("city", "北京");
redisList.leftPush("city", "上海");
redisList.leftPush("city", "南京"); //查找索引范围内的所有数据
List<String> range = redisList.range("city", 0, 10);
System.out.println(range); } }
图形化客户端:
结果:
[南京, 上海, 北京, 上海, 南京]
使用spring整合Hash类型的值
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RedisTest { @Autowired
private RedisTemplate<String, String> redisTemplate; @Test
public void Test01(){ //通过模板对象,获取到redis的hash类型的对象
HashOperations<String, Object, Object> redisMap = redisTemplate.opsForHash(); //建立map集合
Map<String, String> map=new HashMap<>(); map.put("name", "小明");
map.put("age", "18");
map.put("length", "175"); //存储hash对象
redisMap.putAll("people", map); //获取数据库中存储的集合的key
Set<Object> keys = redisMap.keys("people");
//遍历key集合,获取到map中所有的value值
for (Object key : keys) {
Object value = redisMap.get("people", key);
System.out.println(key+":"+value);
}
}
}
图形化客户端界面:
取值后的控制台界面:
name:小明
length:175
age:18
使用spring整合Set类型的值
代码示例:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RedisTest { @Autowired
private RedisTemplate<String, String> redisTemplate; @Test
public void Test01(){
//通过redis模板,创建set类型的redis对象
SetOperations<String, String> redisSet = redisTemplate.opsForSet(); //新建数组,赋值
String[] arr=new String[5];
arr[0]="南京";
arr[1]="北京";
arr[2]="南京";
arr[3]="上海";
arr[4]="北京"; //调用set的add方法,存入key和数组
redisSet.add("city", arr); //通过redis的获取成员方法,利用key获取到set集合
Set<String> members = redisSet.members("city");
System.out.println(members); } }
图形化数据客户端界面:
控制台界面:
[北京, 南京, 上海]
由此可见,set类型的redis不是固定顺序的.
使用spring整合sortSet类型的值
由于set类型是不具有顺序的,而sortSet类型则具有顺序
代码示例:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RedisTest { @Autowired
private RedisTemplate<String, String> redisTemplate; @Test
public void Test01(){ //使用模板创建ZSet对象
ZSetOperations<String, String> redisZSet = redisTemplate.opsForZSet(); //存值,存value的同时,还加上顺序
redisZSet.add("city", "南京", 1);
redisZSet.add("city", "北京", 2);
redisZSet.add("city", "上海", 3);
redisZSet.add("city", "南京", 4);
redisZSet.add("city", "上海", 5);
redisZSet.add("city", "南京", 6); //获取范围顺序里面的值
Set<String> rangeByScore = redisZSet.rangeByScore("city", 1, 10);
System.out.println(rangeByScore); } }
图形化客户端界面:
控制台数据:
[北京, 上海, 南京]
效果同之前一样.
--end
Redis的基本使用(基于maven和spring)的更多相关文章
- 基于maven进行spring 和mybatis的整合(Myeclpise)
学习日记:基于maven进行spring和mybatis的整合,进行分页查询 什么是maven:maven是一个项目管理工具,使用maven可以自动管理java项目的整个生命周期,包括编译.构建.测试 ...
- 基于Maven的Spring + Spring MVC + Mybatis的环境搭建
基于Maven的Spring + Spring MVC + Mybatis的环境搭建项目开发,先将环境先搭建起来.上次做了一个Spring + Spring MVC + Mybatis + Log4J ...
- 基于maven+dubbo+spring+zookeeper的简单项目搭建
maven下搭建dubbo小demo,供初学者学习,有不正确地方还请见谅. 先推荐一篇创建maven项目的文章,个人认为比较完整详细清楚: http://www.cnblogs.com/leiOOle ...
- 基于maven来Spring MVC的环境搭建遇到“坑”
1.注解配置路径问题: 在web.xml中配置spring mvc 路径时, 应该配置如下:classpath:classpath:spring-* 2.jdk版本和Spring MVC版本不一致问题 ...
- Spring日记_01 之基于maven的Spring环境搭建
阿里云镜像:maven.aliyun.com 添加Spring坐标: Spring 是java组件容器,Java饭馆 使用者可以通过getBean(对象ID) 获得Date对象,而不需要自己去new ...
- 基于Maven 的 Spring MVC
Spring MVC 他是基于MVC的设计模式做出来的,他是Spring对Servlet的进一步的封装 MVC:Model View Controller 如何使用Spring MVC?(Spri ...
- 基于Maven,Spring+ActiveMQ实现,贴近实际
本文只实现了Topic,queue改点配置就行了 一.pom依赖 Spring的太长了,具体可以看下面源码里面 <dependency> <groupId>org.apache ...
- SpringBoot之整合Redis分析和实现-基于Spring Boot2.0.2版本
背景介绍 公司最近的新项目在进行技术框架升级,基于的Spring Boot的版本是2.0.2,整合Redis数据库.网上基于2.X版本的整个Redis少之又少,中间踩了不少坑,特此把整合过程记录,以供 ...
- Spring 3整合Quartz 1实现定时任务一:常规整合(基于maven构建)
Spring配置Quartz例子(基于maven构建) 在Spring中使用Quartz有两种方式实现:第一种是任务类继承QuartzJobBean,第二种则是在配置文件里定义任务类和要执行的方法,类 ...
随机推荐
- 折腾kali linux2.0
偶然的机会了解到了kali linux这个用于渗透测试的linux发行版,于是就从官网下了iso,但是制作启动盘老出错.网上查了下说在linux下用dd命令特别简单,于是转到ubuntu下制作启动盘, ...
- senfile函数实例的运行过程截图
//要传输的文件内容如下所示: 启动服务器,等待客户端连接(在同一台主机上模拟的) 客户端远程登录,这里是在本地登录 这个要注意一点就是远程登陆的时候一定要带上端口号不然连接失败!!
- http常见的5个错误
1. HTTP 500错误(内部服务器错误)对对HTTP 500错误的定义已经充分证明了这是一个最常见的HTTP错误. 一般来说,HTTP 500 错误就是web服务器发生内部错误时返回的信息. 例如 ...
- 第二百七十二节,Tornado框架-iframe标签框架伪造ajax
Tornado框架-iframe标签框架伪造ajax html <!DOCTYPE html> <html> <head lang="en"> ...
- Unity获取文件夹下指定类型的文件数量
有个文件夹里面有很多的图片,都是.png格式的,要是一个一个的拖到脚本上觉得很麻烦,就写了一个遍历添加的cars,变量是List<Sprite> 代码如下: using UnityEngi ...
- 【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行(分数规划+spfa)
http://www.lydsy.com/JudgeOnline/problem.php?id=1690 第一题不是水题的题.. 分数规划.. T-T 百度吧..http://blog.csdn.ne ...
- maven+springmvc错误 JAX-RS (REST Web Services) 2.0 can not be installed
项目problem提示错误 JAX-RS (REST Web Services) 2.0 can not be installed : One or more constraints have not ...
- Python3创建RIDE桌面快捷方式的另一种方法
今天尝试了一下Python3下安装Robot Framework,但是原来的Python2下创建ride快捷方式的方法都不奏效,启动不了ride.于是,转为VBS脚本的方式来间接创建快捷方式.毕竟,每 ...
- Linxu内核参数详解
#表示SYN队列的长度,默认为1024,加大队列长度,可以容纳更多等待连接的网络连接数. net.ipv4.tcp_max_syn_backlog = 65536 #每个网络接口接收数据包的速率比内核 ...
- Huber-Markov先验模型相关
随机概率重建-MAP算法 随机概率重建:利用贝叶斯理论作为框架,理想图像的先验知识作为约束条件进行图像重建.常用的随机概率超分辨率重建包括最大后验概率估计法(MAP)和极大似然估计法(ML). MAP ...