redis基础一(基本操作)

一、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) 1

redis> TTL cache_page    # 查看剩余生存时间
(integer) 23

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

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

#  删除单个 key
redis> SET name huangz
OK
redis> DEL name
(integer) 1

# 删除一个不存在的 key
redis> EXISTS phone
(integer) 0
redis> DEL phone # 失败,没有 key 被删除
(integer) 0

# 同时删除多个 key
redis> SET name "redis"
OK
redis> SET type "key-value store"
OK
redis> SET website "redis.com"
OK
redis> 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 test20
OK
redis> 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第二个为域,第三个为域里对应的数据
OK
redis> hset token userid_2 token2  //第一个参数为key第二个为域,第三个为域里对应的数据
OK
redis> hget token userid_2         //hget是获取单个域的数据
token2  
redis> hgetall token                //hgetall是获取整个key的数据
userid_1
token1
userid_2
token2

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

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

redis> SADD test 1
(integer) 1
redis> smembers test
(integer) 1
redis> simember test 1
(integer) 1
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值