redis数据库

本文介绍了Redis,一种内存数据库,其特点包括快速查询、数据结构如字符串、列表、集合、有序集合和哈希,以及在缓存、登录验证等场景的应用。此外,还概述了Redis的一些核心命令和与MySQL的区别,如数据存储位置和持久化策略。

  非关系型数据库Redis也叫缓存数据库也是内存数据库

  五种数据结构

    字符串 string

    列表 list

    集合 set

    有排序的集合 zset

    散列 hash

Redis的应用场景

  ●缓存

  使用Redis可以建立性能非常出色的缓存服务器,查询请求先在Redis中查找所需要的数据,如果能够查询到(命中)则直接返回,大大减轻关系型数据库的压力。

  ●数据临时存储位置

  使用token (令牌)作为用户登录系统时的身份标识,这个token就可以在Redis中临时存储。

  Redis常作为缓存,作为临时数据,制造测试数据

Redis有什么好处

  ●查询快

  ●还可以设置数据的过期时间

  ●现在很多公司都用redis因为redis能抗住高并发

  高并发=大量的用户同时访问场景:火车票刚开的时候抢票,618. 双11.双12, 世界总决赛直播平台

token存放在cookie里面,浏览器存放内容有两个一个叫做header一个叫做cookie

Redis命令

  切换数据库

    Redis默认有16个数据库,使用select进行切换,数据库索引从0开始

    select 0

  KEY操作

    查看所有的key

    keys *

  string

    SET KEY VALUE [EX SECONDS] [PX MILLISECONDS] [NX|XX]

    给KEY设置一个string类型的值。

    EX参数用于设置存活的秒数。

    PX参数用于设置存活的毫秒数。

    NX参数表示当前命令中指定的KEY不存在才行。

    Xx参数表示当前命令中指定的KEY存在才行。

    GET KEY

    根据key得到值,只能用于string类型。

    APPEND KEY VALUE

    把指定的value追加到KEY对应的原来的值后面,返回值是追加后字符串长度

    STRLEN KEY

    直接返回字符串长度

    INCR KEY

    自增1 (要求:参与运算的数据必须是整数且不能超过整数Integer范围)

    DECR KEY

    自减1 (要求:参与运算的数据必须是整数且不能超过整数Integer范围)

  list

    LPUSH key value [value ...]

    针对key指定的list,从左边放入元素

    RPUSH key value [value ...]

    针对key指定的list,从右边放入元素

    LRANGE key start stop

    根据list集合的索引打印元素数据

    正着数: 0,1.2,3....

    倒着数: -1,-2.-3....

    LLEN key

    返回list集合的长度

    LPOP key

    从左边弹出一个元素。弹出=返回+删除。

set

  SADD key member [member ..]

  给key指定的set集合中存入数据,set会自动去重

  SMEMBERS key

  返回可以指定的set集合中所有的元素

  SCARD key

  返回集合中元素的数量

  SISMEMBER key meaber

  检查当前指定member是否是集合中的元素

  返回1:表示是集合中的元素

  返回0:表示不是集合中的元素

  SREM key member [member ...]

  从集合中删除元素

  SINTER key [key ...]

  将指定的集合进行“交集"操作

  集合A: a,b,c

  集合8: b.c,d

  交集: b,c

  SINTERSTORE destination key [key ..]

  取交集后存入destination

hash

  HSET key field value

  插入新数据返回1修改旧数据返回0

  同样的key ,同样的field,新的value,添加这个对应的第二个内容

  HGETALL key

  HGET key field

  获取这个value

  HLEN key

  HKEYS key

  HVALS key

  HEXISTS key field

  HDEL key field [field ...]

  HINCRBY key field increment

  HMNGET key field [field ...]

  HMSET key field value [field value ...]

  HSETNX key field value

  要求field是新建的

zset

  ZADD key [NX|0x] [C] [INCR] score member [score member ..]

  ZRANGE key start stop [WITHSCORES]

  ZCARD key

  ZSCORE key member

  ZINCRBY key increment member

  ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

  在分数的指定区间内返回数据

  min参数可以通过

  -inf表示负无穷

  max参数可以通过

  +inf表示正无穷

  默认是闭区间

  可以通过(min (max形式指定开区间,例如: (50 (80

  ZRANK key rember

  先对分数进行升序排序,返回nember的排名。 排名从0开始

zset和set都不允许value重复

面试问题

  看你简历写了redis

  redis是非关系数据库, 数据是key跟value主要使用的数据类型是string, 它询速度特别快,(为什么快,redis是key和value, 他可以直接根据key找到这个value就像在mysq通过主键查询一样快)redis是基于内存操作的,比硬盘快

  直接说我大概知道redis跟mysql的一点区别

  redis是非关系型数据库,数据是存在内存的,mysq是存在硬盘的,

  mysq|支持索引和外键,但是redis不支持

  mysql有很好的权限控制,redis就是ip和密码

  redis有五个数据类型,string list set zset hash

  string是字符串

  list是一个有序列表,可以左插入和右插入

  set是个集合,不可以放重复数据

  zset是一个有分数的集合

  hash是key和value中value又嵌套了一个key value

  因为string在项目中用的比较多,我还熟悉了一下string命令的命令,比如放进去用set key value取出来呢get这个key

  项目中:

  登录的时候会有一个令牌验证, 这个token就是存在redis里面的, 以后做其他操作的时候,直接在redis拿这个token就好了。

  后端令牌验证,登录之后,会给一个token: 414125etdggdscx23432532wtFJF5@# ¥@fafsasf以后做任何操作都带着这个token去操作就不需要继续登录

  redis的其他问题,数据持久化,它持久化不如mysql, 如果面试问你持久化,你说我知道这个地方它不如mysql数据库,但是其他具体的我不了解,这个工作中是开发用的,我没有用过。

### Redis 数据库使用指南 Redis 是一个开源的内存键值存储数据库,具有高性能、丰富的数据结构支持以及分布式能力。它被广泛用于缓存系统、消息队列高并发应用中。以下是 Redis 的基本概念、连接方法及 Java 操作示例。 #### 1. Redis 简介 Redis 是一种 NoSQL 数据库,支持多种数据结构,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)有序集合(Sorted Set)。其设计目标是提供极高的读写性能,并支持持久化功能以防止数据丢失[^1]。 #### 2. 连接到 Redis 数据库 要使用 Redis 数据库,首先需要确保已正确安装并启动 Redis 服务。可以通过以下方式连接到 Redis: - **本地连接**:如果 Redis 在本地运行,默认端口为 6379,可以通过命令行工具 `redis-cli` 进行连接。 - **远程连接**:对于远程实例,需要指定主机地址端口号,例如 `redis-cli -h <hostname> -p <port>`。 连接成功后,可以使用 Redis 提供的命令进行数据操作。例如,设置获取键值对: ```bash SET mykey "Hello, Redis!" GET mykey ``` 此外,还可以通过编程语言提供的客户端库与 Redis 进行交互[^2]。 #### 3. 在 Java 中操作 Redis 在 Java 中操作 Redis 数据库通常需要借助 Redis 客户端库,如 Jedis 或 Spring Data Redis。以下是一个基于 Spring Data Redis 的配置示例: ```java import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfiguration { @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 设置 Key Value 的序列化器 redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); return redisTemplate; } } ``` 通过上述配置,可以在 Java 应用程序中轻松地与 Redis 数据库交互[^3]。 #### 4. Redis 的持久化机制 Redis 支持两种主要的持久化方式: - **RDB(Redis Database Backup)**:定期将内存中的数据快照保存到磁盘上。 - **AOF(Append-Only File)**:记录每次写操作的日志,以便在重启时恢复数据。 开发者可以根据实际需求选择合适的持久化策略。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值