Redis入门

Redis是一款非关系型数据库,作为缓存系统使用,支持数据持久化和多种复杂数据结构如List、Set、Hash、Zset。它可以后台运行并设置远程访问,同时提供了键值对、计数器、Web集群session共享等功能。Spring框架可以方便地与Redis集成,用于存储和操作各种数据类型,并支持通过序列化处理对象的存储和读取。
摘要由CSDN通过智能技术生成

Redis(Remote Dictionary Server)

概述

NoSql:not only sql,泛指非关系数据库(不用sql语言操作的)

关系型数据库:以数据库表为单位存储,表与表之间存在某种关联关系 缺点:磁盘的io瓶颈

非关系型数据库:数据与数据之间没有关系,以键值对形式存储,通过键获取到值,分布式

cache(缓存 mybatis)

特点:易扩展 高性能 灵活的数据模型

Redis

K-V数据库

支持数据持久化

不仅仅是简单数据结构 还提供list,set,zset,hash等数据结构

支持数据备份

直接将数据存储在内存中;数据结构简单 键值对方式存储 高性能 支持数据持久化 保护数据库

  • 设置redis后台运行

  • 设置远程访问

  • 设置一个连接密码

进入redis客户端模式

./redis-cli

redis_String类型(json/图片)

set key value

get key

del key

keys *

单值缓存 对象缓存

计数器:set newsid:1 0 incr newsid:1 decr get

web集群session共享 (服务器创建一个session对象)

其他类型

Hash:是一个String类型的Field和value的映射表(适合存储对象 对每个属性进行值的修改的)

hset users 1:name jim

hmset key field value[field value]

hget key field

hmget key field

          hdel key field

hlen key

hgetall key

hincrby key field 值(正负)

List:是简单的字符串列表,按照插入顺序排序

lpush(rpush从队尾加) key value

lrange key start stop

lpop(rpop) key

Set无序集合:

srem key member

sadd key member

smembers key(获取集合key中所有元素)

scard key(获取集合key的所有个数)

Zset有序集合 不允许重复 按照分数排序(越小排的越前)

zadd key score member

zrem key member[member...] 从有序集合key中删除元素

zscore key member 返回有序集合key中元素member的分值

zincrby key increment member 为有序集合key中元素member的分值加上increment

zcard key 返回有序集合key中元素个数

zrange key start stop[withscores] 正序获取有序集合keyastart下标到stop下标的元素

设置失效时间

set name ex(秒)/px(毫秒) 30

TTL -1 永不过期

ttl key 查看key 的时间

Spring集成redis

\1. 添加redis依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

\2. 配置连接redis

spring:
  redis:
    host: 192.168.31.100
    port: 6379
    password: 111
    database: 0
    pool:
     max-active: 8  # 连接池最大连接数(使用负值表示没有限制)
     max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
     max-idle: 8 # 连接池中的最大空闲连接
     min-idle: 0 # 连接池中的最小空闲连接
     timeout: 5000ms # 连接超时时间(毫秒)

\3. 注入RedisTemplate

@Autowired
RedisTemplate redisTemplate;

\5. 测试

redisTemplate.opsForValue().set("name", "aa");
redisTemplate.opsForValue().set("users", users,10*1000, TimeUnit.MILLISECONDS);
redisTemplate.hasKey("name");
redisTemplate.opsForValue().get("name");
redisTemplate.delete("users");

序列化键值
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<User>(User.class));

需要被Redis缓存的类,必须实现序列化接口

删除是全局的 在redistemplate中

haskey 键是否存在

存值(个数之类的)因为是String所以要用到序列化 存对象也一样json也要序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值