redis 学习笔记

1,redis和memcache差别

2,取数据

读取键名为post:1散列类型键的title字段的值:

HGET post:1 title

3,安装--省略

4,常用命令

redis-server  启动

redis-cli SHUTDOWN 停止

select 1 选择1号数据库

GET foo 正在使用的数据库是哪个

SET bar 1 建立一个名为Bar的键

KEYS * 获取所有redis中的键 , 遍历循环redis中所有的键,影响性能,不建议使用

EXISTS key 判断是否有某个键,存在返回1,否则返回0

DEL key  删除key

redis-cli KEYS "user:*" | xargs redis-cli DEL 删除所有以user:开头的键

TYPE key 获得键值的类型

 INCR num 如果值是以整数形式存在,则会递增,值不存在时候会报错

对象类型(复数形式):count 的键来存储当前类型对象的数量,每次都会使用INCR递增

INCRBY bar 2 增加指定的整数

DECR key 减少指定的整数

INCRBUFLOAT key increment 增加制定浮点数

APPEND key value 向尾部追加值

STRLEN key 获取字符串长度

MGET  key [key ...] 同时获取多个值

MSET key value [key value ...] 同时设置多个值

1.【 set key value 】 存入一个key和值。如:set myname reson

2.【 get key 】 读取一个key的值。

3.【 del key 】 删除一个key。

4.【 del key1 key2 ... keyN 】 删除多个key。如:del myname1 myname2

5.【 exists key 】 判断一个key是否存在。

6.【 type key 】 查看key的类型。

7.【 rename key keyNew 】 重命名key名。如:rename myname myname2

8.【 dbsize 】 查看当前库中的key的条数。

9.【 expire key time 】 指定key的过期时间,单位为秒。如:expire myname 9(设置9秒后过期)

10.【 ttl key 】 查看redis有多长时间过期,单位为秒。

11.【 keys * 】 列出当前库中所有的key名。

12.【 keys a* 】 列出当前库中所有以字符串“a"开头的key。

13.【 select db-index 】 选择一个数据库,如选择第一个数据库:select 0;选择第二个 select 1;默认有16个数据库,这个值可以在redis.conf中配置。

14.【 flushdb 】 清掉当前库中所有的key(生产环境下需谨慎操作)。

15.【 flushall 】 清掉所有库中全部的key(生产环境下需谨慎操作)。

1.【 mset key1 value1 key2 value2 ... keyN valueN 】 一次性存入多个key和值。

2.【 mget key1 key2 ... keyN 】 一次性读取多个key。

3.【 incr key 】 可以对key类型+1的操作(相当于编程语言里面的++),只能操作number型,操作字符串会报错。可对新值进行操作。

4.【 decr key 】 可以对key类型-1的操作(相当于编程语言里面的--),只能操作number型,操作字符串会报错。

5.【 incrby key num 】 同incr,对key的值加num,比如 incrby aa 10,对aa+10。

6.【 decrby key num 】 同上,对key的值减num。

7.【 append key value 】 对指定key的字符串进行追加,如果key为整形,会被转为字符串。如aa的值为9,执行append aa 10后,会变成910。 

8.【 substr key start end 】 对key进行截取start到end个字符。如aa的值为:abcdef,执行substr aa 2 3后,返回“cd”。

 列表命令:

LPUSH key value [value ...] 向列表两端增加数据

RPUSH key value [value ...]   LPUSH numbers 2 3 增加多个

LPOP numbers  从列表了断弹出数据

RPOP numbers

LLEN key 获取列表中元素的个数

LRANGE numbers 0 2 获取列表片段

LREM key count value 删除列表中指定的值 大于0从左边删除,小于0从右边删,等于0全部删除

EXPIRE命令设置一个键的生存时间,到了时间Redis会自动删除他

SET session:29e3d uid1314
expire session:29e3d 900
(inerger) 1 //返回1表示设置成功,返回0则表示键不存在或者设置失败

TTL命令知道键还有多长时间被删除

SET foo bar //设置键值
EXPIRE foo 20 //设置键时间
TTL foo  //查询还有多少,不存在返回-1(或者永久存在)
PERSIST foo //设置为永久时间

  

5,修改配置文件

通过redis-server的启动参数port设置redis的端口号,还有是否开启持久化,日志级别等。

redis-server /path/to/redis.conf

redis.conf文件

6,SET字符串例子

<?php

//加载Predis库的自动夹杂函数
require './predis/autoload.php';

//连接redis
$redis = new PredisClient(array(
	'host' => '127.0.0.1',
	'port' => 6379
));


if($_GET['name']){
	$redis->set('name',$_GET['name']);
}

$name = $redis->get('name');

?>

  

 例子,获取总长度

redis>SET key hello
OK
redis>APPEND key " world!"
(integer)12

7,事务

redis>NULTI
OK
redis>SADD "user:1:following" 2
QUEUED
redis>SADD "user:2:following" 2
QUEUED
redis>EXEC
1)(integer) 1
1)(integer) 2

先使用MULTI命令告诉Redis:"下面我发给你的命令属于同一个事务,你先不要执行,把他们存储起来".Redis回答可以
接下来发送了两个SADD命令来实现关注和被关注,Redis返回QUEUED表示这两条命令已经进入被执行的事务队列当中了。
当把所有同一个事务的命令都发布给Redis后,我们使用EXEC命令告诉Redis将等待执行的事务队列中所有的命令(即刚才所有返回QUEUED的命令)按照发送顺序依次执行。EXEC命令的返回值就是这些命令的返回值组成的列表,返回顺序和命令的顺序相同。

Redis不支持事务回滚

$isKeyExists = EXISTS rate.limiting:$IP
if $isKeyExists is 1
	$times = INCR rate.limiting:$IP
	if $times > 100
		print 访问频率超过了限制,请稍后再试
		exit
	else
		MULTI
	INCR rate.limiting:$IPEXPIRE $keyName,60
	EXEC

一分钟只能访问100次  

  

原文地址:https://www.cnblogs.com/xiaoxiaomengxiangjia/p/5393446.html