我是靠谱客的博主 愉快紫菜,最近开发中收集的这篇文章主要介绍redis入门与五大数据结构使用场景描述redis是什么redis五大数据结构,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

redis是什么

我们来看看官方的说法,redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件

  • redis是工作在内存中的。相比与mysql这种将数据存储在硬盘中的数据库,redis天生就比它快
  • 为什么叫数据结构存储系统?意思是说redis支持多种数据结构的存储方式,比如string、hash、list、set、sorted set、bitmap、hyperloglog、geospatial。我们可以根据实际需求选择不同的数据结构,下面我们通过简单举例阐述不同数据结构的使用场景

redis五大数据结构

redis的key值可以是简单的字符串,也可以是二进制序列。但是不建议key过长,这会影响redis查找key值的性能

下面只举例常用的redis命令,更全面的redis命令大全请到redis官网查看

string

最简单的key-value存储结构

> set age 18
OK
> get age 
"18"

redis的原子递增操作,incr和incrby本质上是同一个命令

> set counter 100
OK
> incr counter
(integer) 101
> incr counter
(integer) 102
> incrby counter 50
(integer) 152

批量设值

> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"

nxxx的区别,nx表示当key不存在时,才能赋值成功,xx表示当key已经存在时,才能赋值成功

> get age
"11112"
> set age 18 nx
(nil)
> set age 10 xx
OK

setmset的区别

  • set命令在一次连接中只能设置一个key-value,如果要设置多个,必须和redis连接多次
  • mset允许客户端和redis的一次连接中同时设置多个值
  • 如果要做批量操作,mset效率比set高

应用场景
在一个投票系统中,某个参赛者又获得了十票

> incrby user:001:ticket 10

list列表

list是一个双向链表的结构,lpushlpop分别表示左插入和左弹出value值,rpushrpop分别表示右插入和右弹出value值

list是有序的,value值可以重复,可以通过下标获取指定元素

应用场景
某个平台需要记录一个用户发表的文章,可以把文章的唯一ID和该用户绑定,如某用户ID为1,发布了arcticle1、arcticle2、arcticle1三篇文章,那么可以这样记录:

> lpush user:1:arcticle arctitle:1 arctitle:2 arctitle:3

至于某篇文章的具体内容可以用下述的hash来记录

hash哈希

hash很适合存储对象,比如有一张表

idnameagesex
1lucy18girl
2tom20boy

我们需要用hash记录lucy,我们可以这样

> hmset user:1 name lucy age 18 sex girl

当我们需要对lucy的年龄+2的时候,我们可以直接对其中的某个属性操作

> hincrby user:11 age 2

需要注意,当filed个数少,且value不大时,内部使用压缩列表ziplist编码。当value大于64字节时,内部编码为hashtable。

set集合

不允许保存重复元素、集合内元素无序、支持增删改查、集合间可以做差集、并集、交集,最多可以保存232-1个元素

集合适合用来给人、事物贴标签。比如我要表示桌子是黑色的、方形的,凳子是黑色的,圆柱形的,最后找出这两者一样的地方(都是黑色的)

> sadd desk black square
(integer) 2
> sadd chair cylindrical black
(integer) 2
> sinter desk chair
1) "black"

sorted set有序集合

有序集合顾名思义就是集合内的元素有序。集合内每个元素都有分值(score)的概念,排序也就是根据这个分值排的

有序集合适合做需要得到排名的场景需求,比如某场线上文章比赛,举办方通过谁的文章点赞更多,谁就能获得更高的排名

zadd user:arcticle 50 tom 10 jack 99 lucy 
(integer) 3
> zrevrange user:arcticle 0 -1 withscores
1) "lucy"
2) "99"
3) "tom"
4) "50"
5) "jack"
6) "10"

最后

以上就是愉快紫菜为你收集整理的redis入门与五大数据结构使用场景描述redis是什么redis五大数据结构的全部内容,希望文章能够帮你解决redis入门与五大数据结构使用场景描述redis是什么redis五大数据结构所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部