redis基础一(基本操作)

来源:互联网 发布:js去掉html标签样式 编辑:程序博客网 时间:2024/05/17 06:40

一、redis之我见
redis之所以现在用的这么多,是因为redis全部都存在内存当中,速度比mysql快很多。然后和memcache相比,redis支持更多类型,能更好的保存数据,而memcache只能用键值对的方式进行保存。

二、redis的打开方式
这里介绍三种redis的打开方式
2.1 在linux环境下
用redis-cli命令来打开,在linux环境下输入,

redis-cli -p 6379 -h 127.0.0.1 //-p 表示端口,默认6379端口, -h 表示ip,本例表示连接本地redis

这里写图片描述
有些redis可能还存在设置密码的情况。
你可以在进去上面的页面后,输入命令 auth 对应的密码 后就可以正常使用,也可以在进入redis的时候在上面的语句中改写下,成为下面的命令,这样登录也可以正常运行

redis-cli -p 6379 -h 127.0.0.1 -a 对应的密码

2.2 在php中
可以去github上获取redis的php扩展(https://github.com/phpredis/phpredis),然后调用里面的方法就能正常使用了。

2.3 在yii2中
引入yii2-redis的扩展,然后在common模块中的main.php的配置文件中,在components的数组里面加入redis的配置信息:

 'redis' => [            'class' => 'extensions\redis\Connection',            'hostname' => 'localhost',            'port' => 6379,        ],

然后在对应的代码中,使用如下代码就能初始化redis对象了,然后只要通过这个对象去调用对应的redis命令就能进行redis操作了。

$redis = Yii::$app->redis->getRedis();

三、redis基本命令
这里我就介绍一些你在项目开发中用的比较多的的redis命令。
3.1 keys命令
可以redis中存在的key,然后根据可以自己给定匹配规则来查找对应的key,下面是keys命令支持的匹配规则,这个基本涵盖了大部分的例子了。

KEYS * 匹配数据库中所有 key 。KEYS h?llo 匹配 hello , hallo 和 hxllo 等。KEYS h*llo 匹配 hllo 和 heeeeello 等。KEYS h[ae]llo 匹配 hello 和 hallo ,但不匹配 hillo 。KEYS hello 只匹配 hello,可以用来判断对应的key是否存在。KEYS t[w]* 可以匹配two等key。KEYS t??   可以匹配t开头的所有内容特殊符号用 \ 隔开

3.2 EXPIRE 为给定 key 设置生存时间。
使用规则如下,如果想查询剩余的时间的话,可以用TTL命令:

redis> EXPIRE cache_page 30  # 设置过期时间为 30 秒(integer) 1redis> TTL cache_page    # 查看剩余生存时间(integer) 23

这个命令需要注意的一点是,他只能更新一个key的有效时间,但是如果是你是hash类型或者list类型的数据,不能对里面的每一条都设置有效期,设置的只是这单一的key的有效期。
这样可能带来的问题就是,如果你想每条数据都有有效期,就无法实现了。而要实现这个功能的话,我的解决方法是,自己写个定时脚本,每分钟执行一次,去获取list类型里的数据,然后删除过期的数据。

3.3 DEL 删除key的操作,可以删除一个或者多个。

#  删除单个 keyredis> SET name huangzOKredis> DEL name(integer) 1# 删除一个不存在的 keyredis> EXISTS phone(integer) 0redis> DEL phone # 失败,没有 key 被删除(integer) 0# 同时删除多个 keyredis> SET name "redis"OKredis> SET type "key-value store"OKredis> SET website "redis.com"OKredis> DEL name type website(integer) 3

对于删除命令,必须要提的一点是,对批量删除的实现,因为del要删除多个也只能自己复制多个可以才能实现删除。我这里提供的一种解决方案是,在linux环境下,用命令实现同类型的key的删除,下面的例子就是删除以notice开头的所有的key,这个方法是压箱底的东西了哈

redis-cli -p 6379 keys "notice*" | xargs redis-cli -p 6379 del

四、redis的导出数据
在linux环境下,有时候你想查看redis的数据,发现太多内容不好查看,可以导出到本地然后再查看

redis-cli keys '*' > 文章路径/redis_key.txt

五、redis的各种类型
redis有很多种类型,string,hash,list,set,sortedset等.用的比较多的是前面四种。
5.1 string类型
主要用于简单的保存信息,常用的命令:get,set,incr

redis> SET test20OKredis> GET test"20"redis> INCR test(integer) 21

5.2 hash类型
这个类型感觉主要用于保存类似二维数组的形式,如保存所有用户的token,key为token,然后里面的域 field为对应的userid,然后里面保存着对应的用户的token。
常用的命令:hset,hget,hgetall

redis> hset token userid_1 token1  //第一个参数为key第二个为域,第三个为域里对应的数据OKredis> hset token userid_2 token2  //第一个参数为key第二个为域,第三个为域里对应的数据OKredis> hget token userid_2         //hget是获取单个域的数据token2  redis> hgetall token                //hgetall是获取整个key的数据userid_1token1userid_2token2

5.3 list类型
list的话就可以理解为队列的形式,我用到的是消息队列等,或者将数据存入这个队列,然后用定时脚本去处理这个数据可以。
常用命令:llen,lpush,lpop,rpop

5.4 set类型
set类型的话主要表示集合的形式。
常用命令:sadd, smembers,simember,

redis> SADD test 1(integer) 1redis> smembers test(integer) 1redis> simember test 1(integer) 1
1 0
原创粉丝点击