springboot redis操作
Redis五大类型:字符串(String)、哈希/散列/字典(Hash)、列表(List)、集合(Set)、有序集合(sorted set)五种
Controller:@Resource RedisTemplate<String, String> redisTemplate;
总括:
redisTemplate.opsForValue();//操作字符串
redisTemplate.opsForHash();//操作hash
redisTemplate.opsForList();//操作list
redisTemplate.opsForSet();//操作set
redisTemplate.opsForZSet();//操作有序set String:
1.redisTemplate.opsForValue().set(key,value));
2.redisTemplate.opsForValue().get(key));
3.redisTemplate.opsForValue().get(key, start, end);
4.redisTemplate.opsForValue().getAndSet(key, value);
5.redisTemplate.opsForValue().getBit(key, offset);//下方注释
6.redisTemplate.opsForValue().multiGet(keys);
7.redisTemplate.opsForValue().setBit(key, offset, value);//下方注释
8.redisTemplate.opsForValue().set(K key, V value, long timeout, TimeUnit unit);//TimeUnit是timeout的类型,如毫秒\秒\天等
9.redisTemplate.opsForValue().setIfAbsent(key, value);
10.redisTemplate.opsForValue().set(K key, V value, long offset);//博主此处未做java验证
11.redisTemplate.opsForValue().size(key));
12.redisTemplate.opsForValue().multiGet(Collection<K> keys);
13.redisTemplate.opsForValue().multiSetIfAbsent(Map<? extends K, ? extends V> m);
14.同8
15\16\17\18\19.redisTemplate.opsForValue().increment(K key, long delta);或.increment(K key, double delta);
20.redisTemplate.opsForValue().append(key, value);//在key键对应值的右面追加值value
可以看到并没有删除等方法,博主研究了一下可以这样:21.del key------21.redisTemplate.opsForValue().getOperations().delete(key);
| 编号 | 命令 | 描述说明 |
|---|---|---|
| 1 | SET key value | 此命令设置指定键的值。 |
| 2 | GET key | 获取指定键的值。 |
| 3 | GETRANGE key start end | 获取存储在键上的字符串的子字符串。 |
| 4 | GETSET key value | 设置键的字符串值并返回其旧值。 |
| 5 | GETBIT key offset | 返回在键处存储的字符串值中偏移处的位值。 |
| 6 | MGET key1 [key2..] | 获取所有给定键的值 |
| 7 | SETBIT key offset value | 存储在键上的字符串值中设置或清除偏移处的位 |
| 8 | SETEX key seconds value | 使用键和到期时间来设置值 |
| 9 | SETNX key value | 设置键的值,仅当键不存在时 |
| 10 | SETRANGE key offset value | 在指定偏移处开始的键处覆盖字符串的一部分 |
| 11 | STRLEN key | 获取存储在键中的值的长度 |
| 12 | MSET key value [key value …] | 为多个键分别设置它们的值 |
| 13 | MSETNX key value [key value …] | 为多个键分别设置它们的值,仅当键不存在时 |
| 14 | PSETEX key milliseconds value | 设置键的值和到期时间(以毫秒为单位) |
| 15 | INCR key | 将键的整数值增加1 |
| 16 | INCRBY key increment | 将键的整数值按给定的数值增加 |
| 17 | INCRBYFLOAT key increment | 将键的浮点值按给定的数值增加 |
| 18 | DECR key | 将键的整数值减1 |
| 19 | DECRBY key decrement | 按给定数值减少键的整数值 |
| 20 | APPEND key value | 将指定值附加到键 |
.setBit(key, offset, value):key键对应的值value对应的ascii码,在offset的位置(从左向右数)变为value.(此处感谢@参考文章对我理解的帮助),由于二进制只有0和1,此处value只能取0和1,如图,其他值是超出范围的
.getBit(key, offset):获取键对应值的ascii码的在offset处位值.
@ascii码对照表



Hash:
1.redisTemplate.opsForHash().delete(H key, Object... hashKeys);//...表示可以传入多个map的key,用,隔开。或用数组传值
2.redisTemplate.opsForHash().hasKey(key, hashKey);
3.redisTemplate.opsForHash().get(key, hashKey);
4.redisTemplate.opsForHash().entries(key);//返回map集合
5、6.redisTemplate.opsForHash().increment(H key, HK hashKey, long delta);//或increment(H key, HK hashKey, double delta);;
7.redisTemplate.opsForHash().keys(key);//返回map的key集合Set
8.redisTemplate.opsForHash().size(key);
9.redisTemplate.opsForHash().multiGet(H key, Collection<HK> hashKeys);
10.redisTemplate.opsForHash().putAll(H key, Map<? extends HK, ? extends HV> m);
11.redisTemplate.opsForHash().put(key, hashKey, value);
12.redisTemplate.opsForHash().putIfAbsent(key, hashKey, value);
13.redisTemplate.opsForHash().values(key);//返回map中的value集合List;
| 序号 | 命令 | 说明 |
|---|---|---|
| 1 | HDEL key field2 [field2] | 删除一个或多个哈希字段。 |
| 2 | HEXISTS key field | 判断是否存在散列字段。 |
| 3 | HGET key field | 获取存储在指定键的哈希字段的值。 |
| 4 | HGETALL key | 获取存储在指定键的哈希中的所有字段和值 |
| 5 | HINCRBY key field increment | 将哈希字段的整数值按给定数字增加 |
| 6 | HINCRBYFLOAT key field increment | 将哈希字段的浮点值按给定数值增加 |
| 7 | HKEYS key | 获取哈希中的所有字段 |
| 8 | HLEN key | 获取散列中的字段数量 |
| 9 | HMGET key field1 [field2] | 获取所有给定哈希字段的值 |
| 10 | HMSET key field1 value1 [field2 value2 ] | 为多个哈希字段分别设置它们的值 |
| 11 | HSET key field value | 设置散列字段的字符串值 |
| 12 | HSETNX key field value | 仅当字段不存在时,才设置散列字段的值 |
| 13 | HVALS key | 获取哈希中的所有值 |
List: redisTemplate.opsForList().leftPush(key, value);//从左向右存压栈
redisTemplate.opsForList().leftPop(key);//从左出栈
redisTemplate.opsForList().size(key);//队/栈长
redisTemplate.opsForList().range(key, start, end);//范围检索,返回List
redisTemplate.opsForList().remove(key, i, value);//移除key中值为value的i个,返回删除的个数;如果没有这个元素则返回0
redisTemplate.opsForList().index(key, index);//检索
redisTemplate.opsForList().set(key, index, value);//赋值
redisTemplate.opsForList().trim(key, start, end);//裁剪,void,删除除了[start,end]以外的所有元素
redisTemplate.opsForList().rightPopAndLeftPush(String sourceKey, String destinationKey);//将源key的队列的右边的一个值删除,然后塞入目标key的队列的左边,返回这个值
注意:要缓存的对象必须实现Serializable接口,因为 Spring 会将对象先序列化再存入 Redis,否则报异常nested exception is java.lang.IllegalArgumentException: DefaultSerializer requires a Serializable……//;;/
| 序号 | 命令 | 说明 |
|---|---|---|
| 1 | BLPOP key1 [key2 ] timeout | 删除并获取列表中的第一个元素,或阻塞,直到有一个元素可用 |
| 2 | BRPOP key1 [key2 ] timeout | 删除并获取列表中的最后一个元素,或阻塞,直到有一个元素可用 |
| 3 | BRPOPLPUSH source destination timeout | 从列表中弹出值,将其推送到另一个列表并返回它; 或阻塞,直到一个可用 |
| 4 | LINDEX key index | 通过其索引从列表获取元素 |
| 5 | LINSERT key BEFORE/AFTER pivot value | 在列表中的另一个元素之前或之后插入元素 |
| 6 | LLEN key | 获取列表的长度 |
| 7 | LPOP key | 删除并获取列表中的第一个元素 |
| 8 | LPUSH key value1 [value2] | 将一个或多个值添加到列表 |
| 9 | LPUSHX key value | 仅当列表存在时,才向列表添加值 |
| 10 | LRANGE key start stop | 从列表中获取一系列元素 |
| 11 | LREM key count value | 从列表中删除元素 |
| 12 | LSET key index value | 通过索引在列表中设置元素的值 |
| 13 | LTRIM key start stop | 修剪列表的指定范围 |
| 14 | RPOP key | 删除并获取列表中的最后一个元素 |
| 15 | RPOPLPUSH source destination | 删除列表中的最后一个元素,将其附加到另一个列表并返回 |
| 16 | RPUSH key value1 [value2] | 将一个或多个值附加到列表 |
| 17 | RPUSHX key value | 仅当列表存在时才将值附加到列表 |
Set:
redisTemplate.opsForValue().getAndSet(key, value)
| 序号 | 命令 | 说明 |
|---|---|---|
| 1 | SADD key member1 [member2] | 将一个或多个成员添加到集合 |
| 2 | SCARD key | 获取集合中的成员数 |
| 3 | SDIFF key1 [key2] | 减去多个集合 |
| 4 | SDIFFSTORE destination key1 [key2] | 减去多个集并将结果集存储在键中 |
| 5 | SINTER key1 [key2] | 相交多个集合 |
| 6 | SINTERSTORE destination key1 [key2] | 交叉多个集合并将结果集存储在键中 |
| 7 | SISMEMBER key member | 判断确定给定值是否是集合的成员 |
| 8 | SMOVE source destination member | 将成员从一个集合移动到另一个集合 |
| 9 | SPOP key | 从集合中删除并返回随机成员 |
| 10 | SRANDMEMBER key [count] | 从集合中获取一个或多个随机成员 |
| 11 | SREM key member1 [member2] | 从集合中删除一个或多个成员 |
| 12 | SUNION key1 [key2] | 添加多个集合 |
| 13 | SUNIONSTORE destination key1 [key2] | 添加多个集并将结果集存储在键中 |
| 14 | SSCAN key cursor [MATCH pattern] [COUNT count] | 递增地迭代集合中的元素 |
艾玛,太累了,写着写着发现不用这么麻烦,看到文章中的表了吗?若在java中找不到相应方法就对照表中的一些”字段“在java中找,肯定能找到,而且基本不会浪费多少时间。关于List与Set万能的后人补充吧!
FeedBack:
springboot redis操作的更多相关文章
- 补习系列(14)-springboot redis 整合-数据读写
目录 一.简介 二.SpringBoot Redis 读写 A. 引入 spring-data-redis B. 序列化 C. 读写样例 三.方法级缓存 四.连接池 小结 一.简介 在 补习系列(A3 ...
- SpringBoot+Redis整合
SpringBoot+Redis整合 1.在pom.xml添加Redis依赖 <!--整合Redis--> <dependency> <groupId>org.sp ...
- spring boot 学习(十四)SpringBoot+Redis+SpringSession缓存之实战
SpringBoot + Redis +SpringSession 缓存之实战 前言 前几天,从师兄那儿了解到EhCache是进程内的缓存框架,虽然它已经提供了集群环境下的缓存同步策略,这种同步仍然需 ...
- springboot redis简单结合
参考: https://www.cnblogs.com/ityouknow/p/5748830.htmlhttp://blog.csdn.net/i_vic/article/details/53081 ...
- SpringBoot + Redis:基本配置及使用
注:本篇博客SpringBoot版本为2.1.5.RELEASE,SpringBoot1.0版本有些配置不适用 一.SpringBoot 配置Redis 1.1 pom 引入spring-boot-s ...
- 【SpringBoot | Redis】SpringBoot整合Redis
SpringBoot整合Redis 1. pom.xml中引入Redis相关包 请注意,这里我们排除了lettuce驱动,采用了jedis驱动 <!-- redis的依赖 --> < ...
- springboot + redis + 注解 + 拦截器 实现接口幂等性校验
一.概念 幂等性, 通俗的说就是一个接口, 多次发起同一个请求, 必须保证操作只能执行一次 比如: 订单接口, 不能多次创建订单 支付接口, 重复支付同一笔订单只能扣一次钱 支付宝回调接口, 可能会多 ...
- Springboot + redis + 注解 + 拦截器来实现接口幂等性校验
Springboot + redis + 注解 + 拦截器来实现接口幂等性校验 1. SpringBoot 整合篇 2. 手写一套迷你版HTTP服务器 3. 记住:永远不要在MySQL中使用UTF ...
- SpringBoot+Redis 实现消息订阅发布
什么是 Redis Redis 是一个开源的使用 ANSI C语言编写的内存数据库,它以 key-value 键值对的形式存储数据,高性能,读取速度快,也提供了持久化存储机制. Redis 通常在项目 ...
随机推荐
- .net core跨平台
https://www.cnblogs.com/artech/p/7812811.html .net简介:https://baike.baidu.com/item/.NET/156737?fr=ala ...
- python两个装饰器的运算顺序
#装饰顺序按靠近函数顺序执行,调用时由外而内,执行顺序和装饰顺序相反. def makebold(func): def wrap(): return "<i>"+fun ...
- (转)用Flink取代Spark Streaming!知乎实时数仓架构演进
转:https://mp.weixin.qq.com/s/e8lsGyl8oVtfg6HhXyIe4A AI 前线导读:“数据智能” (Data Intelligence) 有一个必须且基础的环节,就 ...
- 牛客提高D3t1 破碎的矩阵
分析 我们发现如果行的异或和等于列的异或和那么对于n-1行m-1列的所有数的选择都是任意的 因为一定可以在它的行末/列末选一个合适的数是的整体满足 但是我们发现对于右下角那一个数是否满足存疑 我们设矩 ...
- JPEG 存储分割后的图象会产生锯齿
分割后的图象如果保存为 JPG 格式,物体边界会产生锯齿状的很暗的像素. 如下图所示. 这会给后续处理带了噪声, 因此,保存分割后的图象最好用无损压缩格式,如 bmp, png 等.
- 奖项-MVP:MVP(微软最有价值专家)百科
ylbtech-奖项-MVP:MVP(微软最有价值专家)百科 微软最有价值专家(MVP) 是指具备一种或多种微软技术专业知识,并且积极参与在线或离线的社群活动,经常与其他专业人士分享知识和专业技能,受 ...
- 测开之路七十六:linux变量和环境变量
变量 赋值 variable=0,访问 $var或${var} 参数 $n 用``引住的会先执行(~键) 位置参数 环境变量/etc/profile:全局的环境变量 . bash_profile:用户 ...
- Optimal Value Functions and Optimal Policy
Optimal Value Function is how much reward the best policy can get from a state s, which is the best ...
- c语言自带的排序与查找
qsort与bsearch qsort(元素起始地址,元素总数,单个元素的大小,比较函数) bsearch(key元素地址,元素起始地址,元素总数,单个元素的大小,比较函数) 比较函数: 原型为int ...
- 深入理解DiscoveryClient
Spring Cloud Commons 提供的抽象 最早的时候服务发现注册都是通过DiscoveryClient来实现的,随着版本变迁把DiscoveryClient服务注册抽离出来变成了Servi ...
