Redis常见的全局命令

Redis中最核心的两个命令set和get

两个最核心的命令就是get和set.

redis是按照键值对的方式来存储数据的,所以set就表示把key-value存储进去,get表示根据key来查询对应的value.

需要注意的是,必须进入redis客户端才能输入redis命令.

此处的key和value都是字符串类型.对于上述的key和value不需要加上引号就是表示字符串类型.如果要给key和value加上引号也是可以的,单引号和双引号都可以.

redis中的命令是不区分大小写的.

redis支持多种数据类型是针对value来说的.

redis自身的键值对是通过哈希表的方式来组织的.

get命令直接输入key就能得到value,如果key不存在,就会返回nil(就是null 的意思).


Redis的全局命令

redis是支持多种数据结构的.redis是键值对的结构,key固定就是字符串,而value会有多种数据类型,比如字符串,哈希表,列表,集合,有序集合等,操作不同的数据类型就会有不同的命令.

全局命令,就是能够搭配任意一个数据类型来使用的命令.

keys

用来查询当前服务器上匹配的key.

通过一些特殊字符(通配符)来描述key的墨阳,匹配上述模样的key就会被查询出来.

支持的通配符有?,*,[abcd],[^e].[a-c].

?表示匹配一个字符.

*表示匹配0个或者多个任意字符.

abcd\]表示只能匹配到a,b,c,d,别的不行,相当于给出固定的选项. \[\^e\]表示排除e,只有e匹配不了. \[a-c\]表示匹配范围内的字符,包括两侧的边界. ![](https://file.jishuzhan.net/article/1720652558038470658/0ee9bd44564eca55e34af5bbf1f706ac.webp) flushall表示清空redis上所有的键值对. ![](https://file.jishuzhan.net/article/1720652558038470658/9263f1c41ef12a02d338bfd4ca568cb2.webp) keys命令的时间复杂度是O(N),所以在生产环境上一般会进制使用keys命令,尤其是keys \*,keys \*表示查询redis上所有的key,可能会造成redis服务器的阻塞. *** ** * ** *** #### exists 用来判定key是否存在,可以同时判定多个key.返回值是key存在的个数. 时间复杂度是O(1),因为redis组织键值对是通过哈希表的方式来组织的. ![](https://file.jishuzhan.net/article/1720652558038470658/b78416e51b2d93a0494890a77e5c6f7f.webp) 一次写多个key是比分开写写多次的效率要高的. 因为redis是一个客户端服务器结构的程序,客户端和服务器之间是要通过网络来进行通信的. 因为一次网络通信就要涉及一次封装和分用,多次的网络通信就要涉及多次的封装和分用. redis自身已深知上述问题,所以redis的很多命令都支持一次操作多个key. *** ** * ** *** #### del 删除指定的key,可以一次删除一个也可以一次删除多个. 时间复杂度是O(1),返回值是删除掉的key的个数. ![](https://file.jishuzhan.net/article/1720652558038470658/7d1e4f305b44a2cf687b5e0f50049b8f.webp) 关于误删操作需要注意的是:如果redis作为缓存,此时误删几个数据问题是不大的,但是误删的太多了,就会导致大量的请求会直接发送给mysql,可能会导致mysql挂掉;如果redis作为数据库,此时误删数据的影响还是比较大的. *** ** * ** *** #### expire和ttl 给指定的key设置过期时间.设置的时间单位是秒.时间复杂度是O(1).此处设置过期时间,必须是针对已经存在的key进行设置.设置成功返回1,设置失败返回0. key存活的时间超过这个指定的时间,就会被自动删除. pexpire设置的过期时间单位是毫秒. ttl用来查看当前key的过期时间还剩多少.单位是秒. pttl也是查询过期时间但是单位是毫秒. ![](https://file.jishuzhan.net/article/1720652558038470658/81a160a320ded8e3c4f5b4e163f55a79.webp) ![](https://file.jishuzhan.net/article/1720652558038470658/f40d3e4f7129f6bedda29932e1f6b0f5.webp) *** ** * ** *** #### type 返回key对应value的数据类型. ![](https://file.jishuzhan.net/article/1720652558038470658/4a73883231bfff3ed1e20e872a0470ce.webp) *** ** * ** *** ### Redis的key的过期策略是怎么实现的? 一个redis中可能同时存在很多很多的key,这些key中可能有很大一部分都带有过期时间,此时redis服务器是如何知道哪些key已过期要被删除,哪些key还没过期呢\> 如果直接遍历所有的key,效率十分低,是行不通的. redis的整体策略是定期删除和惰性删除. 定期删除:每隔一段时间抽取一部分key,进行过期时间的验证,但是要保证这个抽取检查的过程要足够快,所以抽取的key的个数也不能太多,因为要保证redis服务器的正常运行,防止被阻塞. 惰性删除:假设这个key已经到过期时间了,但是redis暂时还没有删除它,key还存在.紧接着,后面的有一次访问,正好使用到了这个key.于是此次访问就会让redis服务器触发删除key的操作,同时在返回一个nil. 虽然有了上述两种策略的结合,但是整体的效果还是一般,还是有很多残留的key没有被及时删除掉. 所以redis针对上述问题还提供了一系列的内存淘汰机制,比如LRU(Least Recently Used,最近最少使用),LFU(Least Frequently Used,最不经常使用)等.

相关推荐
Elastic 中国社区官方博客2 小时前
在 Elasticsearch 中使用 Mistral Chat completions 进行上下文工程
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
编程爱好者熊浪3 小时前
两次连接池泄露的BUG
java·数据库
cr7xin4 小时前
缓存三大问题及解决方案
redis·后端·缓存
爱怪笑的小杰杰5 小时前
浏览器端缓存地图请求:使用 IndexedDB + ajax-hook 提升地图加载速度
ajax·okhttp·缓存
TDengine (老段)5 小时前
TDengine 字符串函数 CHAR 用户手册
java·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
qq7422349845 小时前
Python操作数据库之pyodbc
开发语言·数据库·python
姚远Oracle ACE5 小时前
Oracle 如何计算 AWR 报告中的 Sessions 数量
数据库·oracle
Dxy12393102166 小时前
MySQL的SUBSTRING函数详解与应用
数据库·mysql
码力引擎6 小时前
【零基础学MySQL】第十二章:DCL详解
数据库·mysql·1024程序员节
杨云龙UP6 小时前
【MySQL迁移】MySQL数据库迁移实战(利用mysqldump从Windows 5.7迁至Linux 8.0)
linux·运维·数据库·mysql·mssql