各位小伙伴们大家好,欢迎来到这个小扎扎的Redis 6专栏,在这个系列专栏中我对B站尚硅谷的Redis教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛
💡Redis知识点速览
- 🍖 Redis相关基础知识
- 🥩 默认端口号为什么是6379?
- 🥩 与memcached区别以及底层机制
- 🍖 Redis的键(key)操作
- 🍖 五大基本类型——字符串(String)
- 🥩 字符串常用命令
🍖 Redis相关基础知识
🥩 默认端口号为什么是6379?
6379是九键输入法上MERZ对应的号码,而MERZ取自意大利歌手、女演员Alessia Merz的名字 ,Redis 作者 Antirez 早年看电视节目的时候,觉得 Merz 在节目中的一些话愚蠢可笑,于是Antirez 就用 "MERZ"来形容愚蠢,然后又重新将其定义为,形容”具有很高的技术价值,包含技艺、耐心和劳动,但仍然保持简单本质“。等到Antirez 给 Redis 选择一个数字作为默认端口号时,想都没想就把 “MERZ” 在手机键盘上对应的数字 6379 拿来用了。所以说外国人定义的时候也是真随意啊,前有Java岛的咖啡,后有6379的女演员
🥩 与memcached区别以及底层机制
Redis默认有16个数据库,使用索引从0~15定义,使用redis-cli连接上redis的客户端时默认使用的是0号库。可以使用select 索引号来切换数据库,所有库使用的都是同一个密码 redis与memcached的区别: memcached支持的数据类型比较单一,redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set 有序集合);memcached只能存储在内存中并不支持进行持久化操作,redis两种都可以;memcached使用的是多线程+锁机制,redis使用的是单线程+多路IO复用机制
单线程+多路IO复用机制是什么? 以在食堂吃饭为例,我们在卖饭阿姨那交完钱之后拿到自己相对应的号牌,然后在旁边等着被叫到号才能去吃饭,在等着的时间里还可以刷一刷扎哇太枣糕的博客一点也不耽误时间。在上面这个案例中,卖饭阿姨和厨后厨之间就是单线程操作,但是卖饭阿姨和我们买饭的人之间就是多路IO复用,多路操作但是并不耽误在没被叫到的时候干些别的事情,这样的话就可以将效率提到最高
🍖 Redis的键(key)操作
①查看当前库的所有key: keys *
②判断某个key是否存在: exists key
③查看key的类型: type key
④按照key的值进行删除: del key 、unlink key
同样都是按照key的值删除,两者的区别就是del key直接删除,如果此时删除的数据很大量时就会造成线程阻塞,然而unlink key是非阻塞的异步删除,当执行这个命令之后,这些使用unlink的K-V就交给异步线程执行del操作,主线程无法再访问这些K-V,这样的话就能很快的删除大量的数据而不至于造成线程阻塞无法做其他操作
⑤设置key的过期时间(秒为单位): expire key seconds
⑥查看该key还有多少秒过期: ttl key ⑥查看当前库中key的数量: dbsize
⑥清空当前库的内容: flushdb
⑥清空所有库的内容: flushall
🍖 五大基本类型——字符串(String)
String是Redis中最基本的数据类型,它是一种二进制安全的数据类型,这也就意味着Redis中的String可以是任何类型的数据,比如序列化对象、图片、视频、音频等都可以转换成二进制文件存储在Redis中,从数据库中读出再转换成图片、视频、音频显示。Redis基于K-V存储,一个K-V中的value最大只能是512M
🥩 字符串常用命令
单个添加、获取
添加一个K-V:
set key value如果K已存在就 覆盖原值
setnx key value如果K已存在就添加失败
通过K值查询V: get key添加的同时设置过期时间:
setex key seconds value
修改key的值并返回修改之前的值:
getset key value多个添加、获取
添加多个K-V:
mset k v k v … 如果K已存在就覆盖原值
msetnx k v k v … 如果K已存在就添加失败
通过多个K查询它们的V: mget k k k截取添加、获取
设置K值的V从索引位置开始覆盖字符串:
setrange key from substr
通过K值查询V的范围内子串:
getrange key from to 左闭右闭
其他
在K对应的V后面追加内容:
append key value如果K不存在就新建一个K-V
获取K对应的K的长度: strlen keyK对应的V加一减一,V必须是integer为空的话默认为0:
incr key加一decr key减一
K对应的V加几减几,V必须是integer为空的话默认为0:
incrby key num加几decrby key num减几