springboot集成redis

Redis文件夹中主要文件:redis-cli redis的客户端;redis-server.exe redis程序;redis-benchmark检测redis性能,包括并发连线等。

Redis默认有16个数据库,select 1选择1号数据库(以此类推);

常用操作

1.dbsize 查询当前数据库(已存储的)容量

2.set name zhangsan(存储键值对(name,zhangsan))

3.get name

4.keys *查询数据库内所有内容

5.flushdb 清空当前库

6.flushall 清空所有库

7. EXISTS name 判断当前key是否存在

8.exists name1 判断name值是否为1

9.move name 1 从一号数据库移除key

10. expire name 15 15秒之后name键值对过期

11.ttl name 承上 离过期还剩几秒

12.type name 查看当前key的类型

String类型:

13.strlen name 查看当前key的长度

14.append key1 "hello" 在当前String类型key1值后加上”hello“(如果key1不存在 则相当于setkey1)

15.mset key1 v2 key2 v2 key3 一次设置多个键值对

16.mget key1 key2 key3 一次取出多个key

17incr tem key值自增

18.decr tem key值自减

19.incrby tem 10 自增步长为10

20.decrby tem 10 自减步长为10

21setex key1 10 wuyifan (set with expire)设置键值对伴随存活时间

22.setnx key2 zhen(set with not exists)若不存在则创建key 存在则报错

23.getset key1 不存在则返回null(同时设置key1),存在则取出并修改为key1

24.getrange key1 0 1 取出字符串子串

List (可以理解为一个双端队列 其实质就是一个链表)

lpush list "one" 从左插入一个key

rpush list "two"

lpop list 从左取出一个key

rpop list

rrange list 0 -1 从右取出所有

lrange list 0 -1

lindex list 1 通过下标取出key

rindex list 1

llen list 返回列表的长度

lrem list 1 value1 移除列表中的一个value1值

ltrim list 1 2 取出list中下标为1,2的key-value(即list中只剩下1,2的key-value)

lset list 0 "dubo" 将列表中指定下标的value值更新为dubo(下标不存在则报错)

exists list 判断列表是否存在

linsert list before one two 在one前面插入two

rpoplpush list1 list2 将list1最右边的value插入到list2最左边 

Set (无序集合 不能有重复的元素)

sadd set value1 往set中添加元素 

smembers set 返回set的长度

sismember set value1 查询value1是否是set中的元素

scard set 返回set中元素个数

srem set value 删除值为value的元素

srandmember set 随机抽出一个元素

srandmember set 2 随机抽出两个元素

spop set 随机删除元素

smove set1 set2 "hello" 移动指定元素set1-->set2

sdiff set1 set2 两集合差集

sinter set1 set2 交集

sunion set1 set2 并集

hash(Map集合,value是一个map集合,本质与String类型没有太大区别)

hset hash field value 加入一个键值对

hmset hash field1 value1 field2 value2 加入多个键值对

hget hash field 获取一个value

hmget hash field1 field2 获取多个键值对

hgetall hash 获取所有键值对

hdel hash field 删除指定value

hexists hash field 判断hash表中是否存在该字段

hlen hash 返回hash表长度

hkeys hash 获得所有字段

hvals hash 获得所有值

hincrby/hsetnx 与String用法大同小异

zset(有序set集合)

zadd zset 1 wang

zrangebyscore zset -inf +inf(with scores) 排序(带不带下标值)

zrem zset value 移除指定元素

zcard zset 获得元素个数

zrevrange zset 0 -1 逆序排序

zcount zset 1 3 统计指定区间个数

Geospatial(底层实现原理是zset zset命令同样可以用于geo)

geoadd china:city xxxx(经度) xxxxxx(纬度)  beijing 添加城市经纬度

geopos china:city beijing 返回坐标值

 geodist china:city beijing chongqing km 查询北京到重庆的直线距离

georadius china:city 110 30 500 km(withdist withcoord count 2)  以110 30为中心半径为500km内的元素(显示到中心的距离 显示该元素坐标 输出几个符合条件的元素)

georadiusbymember china:city beijing 500 km 查询位于指定元素周围一定距离的其他元素

Hyperloglog(基数操作)

PFadd key1  a b c  d e f g 添加一组元素

pfcount key1 统计基数数量

pfmerge key1 key2 合并两组数据

有一定错误率

 Bitmaps(统计用户信息 bitmaps位图 数据结构 操纵二进制位来进行记录 只有0/1两个状态)

setbit sign 0 1 添加数据

getbit sign 0 获得数据

bitcount sign 统计为1的数量

redis是单线程的,因为redis基于内存运行,其性能瓶颈不在于CPU而在于机器内存,网络带宽,既然可以单线程,那就没必要多线程。

 

Redis具有100000+的QPS(每秒查询数)基于C语言编写,性能强于同样是key-value存储模式的memeache。

Reids是将所有数据放进内存操作的。多线程会让CPU调度切换上下文同样会花费时间,redis作为内存系统,多次读写操作都是在一个CPU上进行的。所以对于Redis来说单线程工作是效率最高的。(速度CPU>内存>硬盘)

Redis被集成于Spring Data中,Spring Data是与springboot齐名的开源框架

首先创建一个springboot程序,在创建选项中的非关系型数据库(no-sql)中选择第一个。

编写测试类测试

 @Autowired
    RedisTemplate redisTemplate;
    @Test
    void contextLoads() {
   redisTemplate.opsForValue().set("zhang","san");
   System.out.println(redisTemplate.opsForValue().get("zhang"));
    }

RedisTemplate 操作不同的数据类型,api和我们的指令是一样的。

opsforList

opsforHash

opsforSet

除了基本的方法,我们常用的方法都可以直接通过RedisTemplate操作,比如事务和基本的CRUD

对象必须被序列化后才能存入Redis,若实体类没有implements序列化接口serializable则实例化出的对象无法传递给Redis。objectmapper是springboot自带的一个序列化转义对象。key采用string的序列化方式。

  @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        //我们为了自己开发方便,一般直接使用<string, object>
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>(); template.setConnectionFactory(redisConnectionFactory);
// Json序列化配置
        Jackson2JsonRedisSerializer jackson2JsonRedisserializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisserializer.setObjectMapper(om);
// string 的序列化
        StringRedisSerializer stringRedisserializer = new StringRedisSerializer();
// key采用string的序列化方式
        template.setKeySerializer(stringRedisserializer);
// hash的key也采用string的序列化方式
        template.setHashKeySerializer(stringRedisserializer);
// value序列化方式采用jackson
        template.setValueSerializer(jackson2JsonRedisserializer);
// hash的value序列化方式采用jackson
        template.setHashValueSerializer(jackson2JsonRedisserializer);
        template.afterPropertiesSet();
        return template;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中集成Redis可以通过以下步骤实现: 1. 引入spring-boot-starter-data-redis依赖。在项目的pom.xml文件中,添加以下依赖项: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> ``` 这将自动引入与Redis集成所需的依赖项。 2. 在Spring Boot的核心配置文件application.properties中配置Redis连接信息。在该文件中添加以下配置项: ``` spring.redis.host=127.0.0.1 spring.redis.port=6379 spring.redis.password=123456 ``` 根据你的实际情况,将host、port和password替换为相应的值。这些配置将用于建立与Redis服务器的连接。 通过以上步骤,你就成功地在Spring Boot应用程序中集成Redis。现在,你可以使用Spring Data Redis的API来访问和操作Redis数据库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SpringBoot集成redis](https://blog.csdn.net/qq_43512320/article/details/122684865)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [springboot集成Redis](https://blog.csdn.net/m0_54853420/article/details/126515971)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值