redis学习 基础篇(一)

来源:互联网 发布:微信淘宝优惠群二维码 编辑:程序博客网 时间:2024/06/04 01:18

        redis是一种常用非关系型数据库,主要特点为高速,作为php工程师,redis是一种必须掌握的技术,可以有效应对高并发时的缓存问题。具体简介可以在菜鸟教程查看(http://www.runoob.com/redis/redis-intro.html)。

1.redis环境安装

系统环境为centos,下载地址为https://redis.io/download,下载后放到linux的目录里面。我一般用winscp在linux和windows之间传东西很方便,然后运行下面的代码解压并安装

$ wget http://download.redis.io/releases/redis-3.2.9.tar.gz$ tar xzf redis-3.2.9.tar.gz$ cd redis-3.2.9$ make

接下来启动redis服务

$ cd src$ ./redis-server

也可以加redis.conf 这样就可以按配置信息启动了。建议修改conf的daemonize为yes,这样redis会在后台运行。成功之后保持当前窗口,重新开一个窗口启动客户端就可以对redis进行操作了。

$ cd src$ ./redis-cli

2.redis的五种数据类型

(图来源慕课网 侵删)

1)string 操作 存放字符串和数字,可以进行数学计算

127.0.0.1:7200> set string1 xiaozanOK127.0.0.1:7200> get string1"xiaozan"127.0.0.1:7200> set string2 4OK127.0.0.1:7200> incr string2(integer) 5127.0.0.1:7200> get string2"5"127.0.0.1:7200> decyby string2 2(error) ERR unknown command 'decyby'127.0.0.1:7200> decrby string2 2(integer) 3127.0.0.1:7200> get string2"3"127.0.0.1:7200> 
2)list操作:双向队列,允许相同元素

127.0.0.1:7200> lpush list1 12(integer) 1127.0.0.1:7200> lpush list1 13(integer) 2127.0.0.1:7200> rpop list1 13(error) ERR wrong number of arguments for 'rpop' command127.0.0.1:7200> rpop list1"12"127.0.0.1:7200> lpush list2 12(integer) 1127.0.0.1:7200> lpush list2 13(integer) 2127.0.0.1:7200> lpush list2 13(integer) 3127.0.0.1:7200> llen list2(integer) 3
3)set操作:不能有相同元素存在

127.0.0.1:7200> sadd set1 12(integer) 1127.0.0.1:7200> sadd set1 13(integer) 1127.0.0.1:7200> sadd set1 13(integer) 0127.0.0.1:7200> scard set1(integer) 2127.0.0.1:7200> sismember set1 13(integer) 1127.0.0.1:7200> sismember set1 12(integer) 1127.0.0.1:7200> srem set1 13(integer) 1127.0.0.1:7200> sismember set1 13
4)hash操作
127.0.0.1:7200> hset hash1 key1 12(integer) 1127.0.0.1:7200> hget hash1 key1"12"127.0.0.1:7200> hset hash1 key2 12(integer) 1127.0.0.1:7200> hset hash1 key3 12(integer) 1127.0.0.1:7200> hlen hash1(integer) 3127.0.0.1:7200> hset hash1 key3 13(integer) 0127.0.0.1:7200> hget hash1 key3"13"127.0.0.1:7200> hmget hash1 key1 key2 key31) "12"2) "12"3) "13"
5)sort set操作:加权有利于排序
127.0.0.1:7200> zadd zset1 10.1 val1(integer) 1127.0.0.1:7200> zadd zset1 11.1 val2(integer) 1127.0.0.1:7200> zadd zset1 9.2 val3(integer) 1127.0.0.1:7200> zcard zet1(integer) 0127.0.0.1:7200> zcard zset1(integer) 3127.0.0.1:7200> ZRANGE zser1 0 2 withscores(empty list or set)127.0.0.1:7200> ZRANGE zset1 0 2 withscores1) "val3"2) "9.1999999999999993"3) "val1"4) "10.1"5) "val2"6) "11.1"127.0.0.1:7200> zrank zset1 val2(integer) 2127.0.0.1:7200> zadd zset1 12.2 val3(integer) 0127.0.0.1:7200> ZRANGE zset1 0 2 withscores1) "val1"2) "10.1"3) "val2"4) "11.1"5) "val3"6) "12.199999999999999"

此外,redis在2.8.9 版本添加了 HyperLogLog 结构。主要用于计算不同值的数量,即基数统计的算法。优点是所用空间小

127.0.0.1:7200> pfadd key 1(integer) 1127.0.0.1:7200> pfadd key 2(integer) 1127.0.0.1:7200> pfadd key 1(integer) 0127.0.0.1:7200> pfcount key(integer) 2127.0.0.1:7200> 
3.redis发布订阅

pubsub1pubsub2

当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端

先在一个客户端1订阅

127.0.0.1:7200> SUBSCRIBE redischat
再在另一个客户端2发送

127.0.0.1:7200> PUBLISH redischat "xiaozan"(integer) 1
此时在订阅的客户端1会输出信息
1) "message"2) "redischat"3) "xiaozan"
从而达到了订阅效果


4.redis事务

实际上就是输入多条命令之后,按顺序一次执行。开始输入multi,执行输入exec

127.0.0.1:7200> MULTIOK127.0.0.1:7200> SET NUM 1QUEUED127.0.0.1:7200> INCR NUMQUEUED127.0.0.1:7200> DECRBY NUM 2QUEUED127.0.0.1:7200> GET NUMQUEUED127.0.0.1:7200> EXEC1) OK2) (integer) 23) (integer) 04) "0"

此外redis还可以执行脚本命令,还有连接验证功能。以后用到的时候再说,这次基本篇一就这样了。下次讲redis在php里面的应用,可能结合yii框架来说明。

原创粉丝点击