Redis实践(二)

Redis数据类型

Redis支持五种数据类型的存储

1.字符串(String)

2.字符串列表(list)

3.字符串集合(set)

4.有序字符串集合(sorted sets)

5.哈希(hashes)

关于Key的建议

  1. 尽量不要太长,不要超过1024字节,会消耗内存,还会拖慢查询的效率
  2. 不要太短,太短会影响可读性
  3. 统一命名的风格

String类型的操作实践

字符串类型是redis中最简单的数据类型,他存储的值可以是字符串,最长字符串长队支持到512M

递增

         Incr/incrby

         当存储的字符串是整数时,使用incr、incrby可以使字符串递增

        

递减

Decr/decrby

向尾部追加值,返回值是追加字符串的总长度

Append

字符串长度,返回值是字符串的长度,不存在或者空串,返回为0

Strlen key

同时设置/获取多个键

Mset/mget

同时设置/获取多个键

Mset/mget

面试题分析

  1. 博客的字数如何统计?

答:使用Strlen

  1. 将日志追加到指定的key?

答:使用append

  1. 如何实现一个分布式自增id

答:incr

  1. 如何实现一个博客的点赞操作

答:incr,decr

Hash应用实践

一般用于存储对象信息,存储了字段和字段值的映射路径,最多可以包含232个字段

存储/读取

Hset/hget

Hmset/hmget

设置/获取多个对象属性

属性是否存在

Hexists

删除属性

Hdel

只获取key或者value的值

Hkeys/hvals

面试题:

  1. 发布一篇博客需要写内存吗?

答:需要,hmset

  1. 浏览博客内容会怎么做?

答:hmget

  1. 如何判断博客是否存在

答:hexists

  1. 如何删除一篇博客?

答:hdel

  1. 分布式系统中登录成功如何存储用户信息?

答:hmset

List类型应用实践

         相当于java中的LinkedList,原理就是一个双向链表。支持正向、反向查找和遍历等操作,插入速度比较快。

         应用:热榜,最新评论

在key的对应list的头部添加字符串元素

         Lpush

在key对应的list的尾部添加字符串元素

         Rpush

返回列表中指定区间的元素,区间以偏移量START和END指定。其中0指定列表的第一个元素,1表示列表的第二个元素。

如果用负数的话,-1表示列表的最后一个元素,-2表示列表的倒数第二个元素

Lrange list 0 -1   表示返回列表中的第一个元素到列表中的最后一个元素

删除key中的元素

         Del

Linsert

在key对应的list特定位置中插入元素

Lset

设置list中指定下标的元素值

Lrem

从key对应的list中删除count个和value相同的元素,count>0时,按从头到尾的顺序删除

Ltrim

保留指定key的值范围内的数据

Lpop

从list的头部删除元素,并返回删除的数据

Rpop

从list的尾部删除元素,并返回删除的数据

Llen

返回key对应的list的长度

Lindex

返回指定下标中的元素信息

rpoplpush

从第一个list的尾部移除元素并添加到第二个list的头部,最后返回被移除的元素值,整个操作是原子的.如果第一个list是空或者不存在返回null

面试题:

         如何基于redis实现一个队列结构?(lpush/rpop) 先进先出

         如何基于redis实现一个栈结构?(lpush/lpop) 先进后出

         如何基于redis实现一个阻塞队列?(lpush/brpop)

         如何实现秒杀? 先进先出

         如何通过list结构实现一个消息队列? FIFO->lpush/rpop

         如何动态的更新商品的销量列表?  Lisert

         粉丝的列表使用什么结构实现? List结构

 

Set类型应用实践

类似于java中的hashset,无序集合,集合元素不可重复

Sadd

添加元素,如果是重复元素添加失败,返回0

Smembers

获取内容

Spop

移除并返回集合中的一个随机元素

Scard

返回set中的元素个数

Smove

移动元素从一个集合到另外一个集合

Sunion

并集,将两个集合中的元素合并为一个

面试题

朋友圈的点赞功能如何实现? Sadd,srem,smembers,scard

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值