每日问答10

一、redis有哪些类型?

  1. string是redis最基本的类型,一个key对应一个value,一个键最大能存储512MB。string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

  2. Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis中每个 hash 可以存储 232 - 1 键值对, 可以看成具有KEY和VALUE的MAP容器,该类型的数据仅占用很少的磁盘空间。

  3. Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

  4. Redis 的 Set 是 string 类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

  5. Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

二、redis String类型有哪些常用命令?列举6个

  1. set key value:Redis SET 命令用于设置给定 key 的值。如果 key 已经存储值, SET 就覆写旧值,且无视类型

  2. get key:Redis GET命令用于获取指定 key 的值。如果 key 不存在,返回 nil 。如果key储存的值不是字符串类型,返回一个错误。

  3. getrange key start end:用于获取存储在指定 key 中字符串的子字符串。字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)

  4. getset key value:Getset 命令用于设置指定 key 的值,并返回 key 的旧值,当 key 不存在时,返回null;

  5. del key:删除指定的KEY,如果存在,返回值数字类型。(删除语法)

  6. incr key:Incr 命令将 key 中储存的数字值增1。如果 key 不存在,那么 key 的值会先被初始化为0 ,然后再执行 INCR 操作(自增)

  7. decr key:decR 命令将 key 中储存的数字减1(自减)

三、redis String类型有哪些应用场景?列举4个

分布式锁;计数器;保存图片内容;保存json字符串数据

1、String通常用于保存单个字符串或JSON字符串数据

2、因String是二进制安全的,所以你完全可以把一个图片文件的内容作为字符串来存储

3、计数器(常规key-value缓存应用。常规计数: 微博数, 粉丝数)

INCR等指令本身就具有原子操作的特性,所以我们完全可以利用redis的INCR、INCRBY、DECR、DECRBY等指令来实现原子计数的效果。假如,在某种场景下有3个客户端同时读取了mynum的值(值为2),然后对其同时进行了加1的操作,那么,最后mynum的值一定是5。不少网站都利用redis的这个特性来实现业务上的统计计数需求。

四、redis Hash类型有哪些常用命令?列举4个

  1. HSET KEY FIELD VALUE //为指定的KEY,设定FILD/VALUE (赋值)

  2. HGET KEY FIELD //获取存储在HASH中的值,根据FIELD得到VALUE(取值)

    1. ​HMGET key field[field1] //获取key所有给定字段的值

    2. ​ HGETALL key //返回HASH表中所有的字段和值

    3. ​ HKEYS key //获取所有哈希表中的字段

    4. ​HLEN key //获取哈希表中字段的数量

  3. HDEL KEY field1[field2] //删除一个或多个HASH表字段(删除)

  4. HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值

  5. HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。

  6. HINCRBYFLOAT key fieldincrement 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

  7. HEXISTS key field //查看哈希表 key 中,指定的字段是否存在

五、redis Hash类型有哪些应用场景?列举4个

购物车;商品详情;个人信息详情;新闻详情

六、jedis客户端和RedisTemplate你认为的区别?

Jedis是Redis官方推荐的面向Java的操作Redis的客户端,而RedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性,方便与其他Spring框架进行搭配使用如:SpringCache

七、redis缺点是什么?(有什么解决方案)

1.服务器意外关机导致数据丢失:根据条件进行持久化

2.持久化:redis的数据是存储在内存中,若想要放入硬盘中需要进行持久化;有两种方式:

​ 定时快照:将整个数据库写入硬盘中,每次都是写入全部数据,代价非常大;

​ 语句追加(aof):追踪变化的数据,但是追加的log可能非常大,同时所有的操作都要执行一边,回复的慢;

3.耗内存:优化存储方式;配置更大的内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值