Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

实例
redis 127.0.0.1:6379> SET name “shangzh.com”
OK
redis 127.0.0.1:6379> GET name
“shangzh.com”
在以上实例中我们使用了 Redis 的 SET 和 GET 命令。键为 name,对应的值为shangzh.com。

注意:一个键最大能存储512MB。

Hash(哈希)
Redis hash 是一个键值对集合。

Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

实例
redis 127.0.0.1:6379> HMSET user:1 username shangzh.com password shangzh.com points 200
OK
redis 127.0.0.1:6379> HGETALL user:1
1) “username”
2) “shangzh.com”
3) “password”
4) “shangzh.com”
5) “points”
6) “200”
redis 127.0.0.1:6379>
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。 实例中我们使用了 Redis HMSET, HEGTALL 命令,user:1 为键值。

每个 hash 可以存储 232 – 1 键值对(40多亿)。
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。

实例
redis 127.0.0.1:6379> lpush shangzh.com redis
(integer) 1
redis 127.0.0.1:6379> lpush shangzh.com mongodb
(integer) 2
redis 127.0.0.1:6379> lpush shangzh.com rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange shangzh.com 0 10
1) “rabitmq”
2) “mongodb”
3) “redis”
redis 127.0.0.1:6379>
列表最多可存储 232 – 1 元素 (4294967295, 每个列表可存储40多亿)。

Set(集合)
Redis的Set是string类型的无序集合。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

sadd 命令
添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误。

sadd key member
实例
redis 127.0.0.1:6379> sadd shangzh.com redis
(integer) 1
redis 127.0.0.1:6379> sadd shangzh.com mongodb
(integer) 1
redis 127.0.0.1:6379> sadd shangzh.com rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd shangzh.com rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers shangzh.com

1) “rabitmq”
2) “mongodb”
3) “redis”
注意:以上实例中 rabitmq 添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略。

集合中最大的成员数为 232 – 1 (4294967295, 每个集合可存储40多亿个成员)。

zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

zset的成员是唯一的,但分数(score)却可以重复。

zadd 命令
添加元素到集合,元素在集合中存在则更新对应score

zadd key score member
实例
redis 127.0.0.1:6379> zadd shangzh.com 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd shangzh.com 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd shangzh.com 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd shangzh.com 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE shangzh.com 0 1000

1) “redis”
2) “mongodb”
3) “rabitmq”

Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf。

你可以通过 CONFIG 命令查看或设置配置项。

语法
Redis CONFIG 命令格式如下:

redis 127.0.0.1:6379> CONFIG GET CONFIG_SETTING_NAME
实例
redis 127.0.0.1:6379> CONFIG GET loglevel

1) “loglevel”
2) “notice”
使用 * 号获取所有配置项:

Read More →

REDIS数据库其实与mysql数据库在很多的用法上是一样的,今天 我们要介绍的是REDIS存取PHP多维数组的示例,如果有需要可以和小编一起来学学。

PHP数组实际上是哈希表,Redis似乎不支持二维数组,但是可以使用hmset把PHP数组保存为hash类型的数据,使用hmget读取一维的键没问题,读取二维的多维的键就返回false。
$hset = array(
‘WUST’=>’WUHAN SI’,
‘birth’=>1031,
‘marray’=>array(
‘apple’=>’苹果’,
‘orange’=>’org’,
),
);
dump($redis->hmset(‘tuntun’,$hset));//将数组保存为hash类型
dump($redis->hmget(‘tuntun’,array(‘birth’)));//取出一位数组birth的值,ok

dump($redis->hmget(‘tuntun’,array(‘marry’,’apple’)));//取出二维数组marray的apple的值,返回false

就算使用hgetall方法:
dump($redis->hgetall(‘hset_tuntun’));
结果如下:

array(3) {
[“WUST”] => string(8) “WUHAN SI”
[“birth”] => string(4) “1031”
[“marray”] => string(5) “Array”
}
二维数组无法显示。所以redis不支持PHP的多维数组的存取。
解决办法是:如有要用redis存多维数组,可以把数组json_encode转换成json各式数据,以string类型的方式存储。读取的时候再json_decode回来。

redis的操作很多的,以前看到一个比较全的博客,但是现在找不到了。查个东西搜半天,下面整理一下php处理redis的例子,个人觉得常用一些例子。
下面的例子都是基于php-redis这个扩展的。

1,connect
描述:实例连接到一个Redis.
参数:host: string,port: int
返回值:BOOL 成功返回:TRUE;失败返回:FALSE
示例:
复制代码 代码如下:

<?php
$redis = new redis();
$result = $redis->connect(‘127.0.0.1′, 6379);
var_dump($result); //结果:bool(true)
?>
2,set
描述:设置key和value的值
参数:Key Value
返回值:BOOL 成功返回:TRUE;失败返回:FALSE
示例:
复制代码 代码如下:

<?php
$redis = new redis();
$redis->connect(‘127.0.0.1′, 6379);
$result = $redis->set(‘test’,”11111111111″);
var_dump($result); //结果:bool(true)
?>
3,get
描述:获取有关指定键的值
参数:key
返回值:string或BOOL 如果键不存在,则返回 FALSE。否则,返回指定键对应的value值。
范例:
复制代码 代码如下:

<?php
$redis = new redis();
$redis->connect(‘127.0.0.1′, 6379);
$result = $redis->get(‘test’);
var_dump($result); //结果:string(11) “11111111111”
?>

Read More →