学习笔记:一文看懂Redis

Redis是一个开源的、基于内存的数据结构存储器,可以用作数据库缓存和消息中间件。其实是一个C/S架构。Redis的Server是单线程服务器,基于Event-Loop模式来处理Client的请求。

数据结构:

string

radis中的字符串的底层数据结构是一种动态字符串(simple dynamic string)。在原码中,redis使用范型定义很多次,因为它为了对内存作极致的优化,不同长度的字符串使用不同的结构体表示。redis规定字符串不能超过512M
在这里插入图片描述

动态字符串与C字符串区别在于,C字符串获取字符串长度的时间复杂度为O(N),不能安全地拼接和操作,只能保存文本信息。所以不符合redis对字符串在安全性、效率及功能的要求。

基本操作 :get/set/incr/incrby/decr/decrby/mset/mget/exists/del/type

//1.set和get命令设置键值对,set可以有第三个参数判断参数是否已经存在
//可以把任何值作为value,甚至是图片,但是value不可以超过512M
> set mykey somevalue
OK
> get mykey
"somevalue"
> set counter 100
OK
//2.incr是原子操作,哪怕有多个client去做incr操作,counter也是逐一增加的。
> incr counter
(integer) 101
> incrby counter 50
(integer) 152
//3.mset和mget命令
> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"

值得一提的是关于临时变量设置:
EXPIRE 设置过期时间,这个功能通常用来控制缓存失效时间。
PERSIST 设置永久值
GETSET 为key设置一个值并返回原值,在统计时需要返回原值的同时置0

//该变量存在5秒
> expire key 5
(integer) 1
> ttl key
(integer) 4
//重新变为永久变量,ttl不存在
>  PERSIST mykey
(integer) 1
>  TTL mykey
(integer) -1
//getset命令用于统计
> set key value
OK
> getset key value1
"value"
> get key
"value1"

使用场景:常规key-value缓存场景,常规计数:微博数,粉丝数。

list

Redis里面的list是一个链表结构,所以访问索引的速度不快,但是添加的速度很快。因为对于数据库系统而言,至关重要的是能够以非常快的方式将元素添加到很长的列表中。当快速访问大量元素的中间部分很重要时,可以使用另一种称为sorted set的数据结构。

  • Redis链表特性:
      ①、双端:链表具有前置节点和后置节点的引用&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值