redis数据结构

redis数据结构介绍

strings 字符串。
一个比较简单的存储类型,就是一个 key 对应一个 value;我们打开redis-cli来试试,不知道怎么启动redis可以开我的上篇reids的安装。
这里写图片描述

set name “xiao wang”
get name
通过set 声明 name 字段作为 key,xiao wang作为值存储下来;通过get 取字段name的值。
这里写图片描述

重新set name另外的值时候,原来set的 xiao wang被覆盖,变成新的值 ni hao,所以一个key 对应一个 value,同时注意的是值得大小不能超过512M。
你以为这个数据结构就这样,说了一堆废话!其实还有计数功能。来看看。
这里写图片描述
通过以上命令可以看到strings结构 可以通过 incr incrby decr decrby 来操作值,而且还可以存储数值不仅仅是字符串,解析能力还是大大滴好滴。你系不系会说,你再教我小学数据吗?你咋不上天呢!
好吧!我错了,其实这个小学算数,在项目中可以帮助我们进行计数类统计,比如实时用户数,投票数等等!如果我们去写这些统计数值的,你系不系要考虑多线程安全问题?然后你可能会说,什么线程安全!
我擦!你还不知道这个问题?就是两个用户在同一时间取到一个数值假设是10,当他们都要去加1的时候得到结果就会是11但是我们理想的应该是12,啊!可清楚了,知道了吧。所以redis是不会发生这种情况的ok?
redis的计数不必考虑,当然之后会探讨下为什么redis能确保线程安全下,还可以保证有极高的读写性能。
除了计数操作之后字符串还有相关的一些其他的操作:
1.MSET和MGET 来一次存多key对应多值,一次获取多个key - value,具体演示看下面。
这里写图片描述
通个exists 检查key 是否存在
这里写图片描述
返回1代表存在,0为不存在。就是这么噶事。
del 命令删除一个 key
这里写图片描述
看到了吧,看到就好。删除后再检查name是否存在时候结果就是 0了。
type检查 存下来的value是什么类型
这里写图片描述
我存了一个 10,用type它告诉我是string类型的。
这里写图片描述
重点放expire可以设置一个存下来的key-value 有一个失效时间,过了时间就鸡鸡,game over.这个功能很有用的,比如在用户缓存时间,可以设置登录在线超时。来清空用户登录。
看我操作! 我建立 key-value 再设置这个key有效期10秒。是不是太快了呵呵呵你懂得! 立马去get human有值。坚持到10秒,再get human 美女跑掉了

lists介绍

lists列表是一种链表式的数组,插入的速度是很快的,对于100元素中在头部或者尾部插入一个元素的速度,和在1000个元素中插入的速度相比是一样的,时间的复杂度是常量级别。
- lists lpush(向左插入一个元素) 和 rpush(向右插入一个元素)

lpush man gexu
lpush man gexu2
rpush man gexu3
lrange man 0 -1
插入元素
查询第一个到最后一个之间的元素
rpush man gexu gexu2 gexu3 //一次插入多个元素

  • rpop 和 lpop (从最右边和最左边删除元素,并返回删除的值)
    这里写图片描述
  • del (删除)、exists(检测是否存在)
    del man;
    exists man;

HASHS介绍

以键值对存在
  • 使用 hmset 命令存入 hget、hgetall获得值

这里写图片描述

  • hincrby 增加某个域字段的值
    这里写图片描述

SETS介绍

  • sets是string数据结构的无序排列,通过sadd 插入元素,查询出来之后和插入的顺序不一定是一致的。

命令 >sadd man gexu gexu1 gexu2;
命令 >smembers man (查询man中所有元素)
得到的顺序不是插入的顺序。

sets除了基本的插入 删除(spop)还有交集 并集 或许随机元素等等可以去官方查询命令
点我查询

soted sets 是一种带有排序的集合。
命令 > zadd man 2 gexu2
命令 > zadd man 1 gexu1
命令 > zadd man 3 gexu3
按照以上插入顺序 并设置排序序号。
命令 > zrange man 0 -1 (得到结果是根据 序号升序列出所有元素)
命令 > zrevrange man 0 -1(得到结果是根据 序号降序列出所有元素)

-总结

对于常用的redis数据结构主要是以上4个在大部分项目中是最常见的,根据它本身的特性,应用到具体的系统服务中。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

复杂的程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值