2021/12/31 北京 redis (1) string和list 、数据结构和基本命令

 当数据量太大的时候,一个机器放不下了,就需要 "主从同步,读写分离"

像下面这个图一样:我们的mysql2只负责写,mysql1和mysql3只负责读。并且1和3会同步2里的数据。


数据库的本质就是读和写

那缓存解决了读的压力,分库分表就是解决了写的压力


 什么是nosql(不要像我一样傻不拉几,以为是不写sql了,真正意思not only sql)

我们以前学的mysql,oracle。都是基于表的,用表的行/列存储数据。

当然了nosql就更牛了,还有别的存储方式,比方说键值存储。

 在这打个伏笔,懂得都懂。MongoDB(名字听起来就好听)得整起来。先学redis,工作需要。


redis(远程字典服务),有多牛逼呢???

redis是单线程的,那单线程为什么那么快?一秒钟写8万次,读11万次。

首先,就速度来说,cpu>内存>硬盘。

但是吧,要是多线程会有一个弊端,就是cpu的上下文切换,很耗时。redis是将所有数据放在内存中,那么这时候使用单线程效率就是最高的。


redis 命令,不区分大小写。redis默认有16个数据库,删库啥的慎用。

清空当前数据库  flushdb

清空全部数据库  flushall

查看数据库中所有的key   keys *

如下,get name,获取到了name这个key(name是一个key)对应的value。

用expire设置了过期时间;

可以通过ttl来查看还有多久过期,ttl为负数是就是过期了;

我们也可以用type name,来查看key的类型。


redis对字符串的操作

1.字符串的追加和获取字符串长度。

2. 自增,自减。可以指定步长的增减incr 、decr。在遇到数值操作时,redis会将字符串类型转换成数值。

 3.字符串的截取与替换getRange和setRange


通杀命令

 1.设置过期时间和不存在设置setex和setnx

2.批量设置多个值,批量获取多个值mset和mget

 3.设置一个对象

注意key的样子可以是user:{id}:{filed}

set user:1 {name:zhangsan,age:3}


Ⅱ redis列表list操作,所有list命令都是l开头的

列表中,在俩边插入或者改动值,效率最高!中间元素,效率会相对低一些(redis中列表底层不是数组,而是链表)

学了这一块,你会发现队列和栈的奥秘:

 lpush,rpush,lragnge(不是i)

 lpop,rpop分别从列表的左边和右边移除元素

获取列表的长度 Llen

 通过下标获取list某一个下标的值  lindex

  移除列表指定个数的value   lrem

 通过下标截取list指定的长度  ltrim

 组合命令rpoplpush,移除列表最后一个元素,把它放到一个新的列表

 更新列表中指定下标的值 lset

 在某个元素之前或之后传入值  linsert


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值