企业网站做几个合适,程序员做网站类的网站犯法吗,国际要闻,html个人网页源码Redis是一个 客户端-服务器 结构的程序#xff0c;Redis客户端和服务器可以在同一台主机上#xff0c;也可以在不同主机上#xff0c;客户端和服务器之间通过网络进行通信。服务器端负责存储和管理数据。客户端则可以通过命名对服务端的数据进行操作。
Redis客户端有多种Redis客户端和服务器可以在同一台主机上也可以在不同主机上客户端和服务器之间通过网络进行通信。服务器端负责存储和管理数据。客户端则可以通过命名对服务端的数据进行操作。
Redis客户端有多种1.自带的命令行客户端redis-cli2.带图形界面的客户端不推荐使用3. 基于Redis的api自行开发的客户端类似于mysql的jdbc工作中最常用的
这里使用redis-cli来演示命令的使用在linux服务器中输入 redis-cli即可打开客户端 1. set get 命令
set命名和get命令 是redis中最常用也是最核心的两个命令。
set把key可value存入redisget根据key查找value
使用方式 set key value 这里key和value默认是字符串类型可以加上单引号或双引号也可不加 redis中命令不区分大小写。 get key 当key不存在时get命令会返回nil和null类似
2. keys
keys命令可以进行模糊查询返回匹配到的key当我们输入keys时会提示要填写pattern也就是匹配的规则 pattern规则
这里我们先添加一些数据方便演示 ? 匹配任意一个字符 * 匹配任意多个字符包括0个 [abc..] 只能匹配括号中的字符 [^abc]排除括号中的字符 [a-d]匹配ad区间内的字符 注意keys命名的复杂度是O(N) 所以在线上环境要慎重使用keys特别是 keys *因为线上环境中的key可能会非常多而redis是一个单线程的服务器如果使用keys * 语句会查询所有的key执行时间可能会很长导致其他客户端的服务被阻塞超时redis通常又是作为缓存此时超时的请求就会直接在数据库中查就可能会有大量的请求短时间到达数据库导致数据库瘫痪
3. exists
exists命令用于判断一个或多个key是否存在会返回key存在的个数注意redis中key不能重复 exists key1 key2 ... hello 和key1存在key不存在所以返回2redis是以哈希表的形式来组织数据的所以判断某个key是否存在的操作是O(1)级别的
注意Redis客户端要对数据操作会通过网络发送命令给服务器所以redis命令大多都是支持批量操作的就可以通过一次网络通信操作多个数据节省时间
4. del del key1 key2 ... 删除一个或多个key返回删除的数量 hallo和hllo存在key不存在所以返回2再次查询可以看到删除成功 5. exprire exprire key seconds 给指定的key设置过期时间单位为秒从设置起如果key存活超过过期时间key就会被删除设置成功返回1 失败返回0 对计算机来说秒是一个比较长的时间单位于是redis还提供了一个pexpire用于设置毫秒级的过期时间 pexprie key milliseconds redis 的过期策略是如何实现的面试题
定期删除定期抽取一部分数据检查是否到达过期时间因为redis是单线程如果数据量大抽取全部数据会导致阻塞惰性删除由于定期删除每次只检查一部分数据很有可能某个数据到达过期时间了还没有被删除当这个数据被访问到时redis就会立刻删除这个key。
虽然有了上面两种策略但整体的删除效果还是一般于是redis还提供了一系列的内存淘汰策略这里不展开叙述感兴趣可以自行了解 。
注意redis并没有采用定时器的方式来实现过期策略
6. type type key 返回key对应的value的数据类型