Redis基本使用

客户端连接

无密码 : redis-cli

有密码 : redis-cli -a 密码

php连接redis

$redis = new Redis();

$redis = connect('地址','端口')

如果有密码

$redis->auth('密码');

redis的数据结构

string(字符串)

说明:和memcached一样的类型,一个key对应一个value

基本命令:

插入数据:

set mystring_1 123131

set mystring_2 123dfs

读取数据

get mystring_1

get mystring_2

追加数据(有对应的key追加,没有写入)

append mystring_1 1231321

删除

del mystring_1

写入时设置过期时间

setex mystring_1 30 value (命令 key 过期时间 值)

获取过期时间

ttl mystring_1 (所有数据结构通用)

设置过期时间

expire mystring_1 30 (所有数据结构通用)

……

使用场景:

1.短信验证码

2.token

3.简单字符串存储

……

list(队列)

说明

list是一个链表结构,有出队,入队,获取一个范围里的值和队列长度,双向链表是因为他左右都可以操作

基本命令

入队(lpush,rpush)

lpush mylist 123132

出队(lpop,rpop)

lpop mylist

取list一定范围里的值(key,start,end)

lrange mylist 0 0

取队列的长度

llen mylist

……

使用场景

1.消息队列

2.抢购场景

……

hash(字典)

说明

key对多个属性的数据 (user1.sex,user1.name) ,这些属性也可以序列化,string形式存储,但是会对性能有影响

基本命令

写入

hset user_1 name 李四

hset user_1 age 30

读取

hget user_1 name

hget user_1 age

获取属性数量

scard user_1

获取一个集合里所有key

smembers user_1

删除一个集合的字段

srem user_1 name

……

使用场景

1.保存用户信息

……

set(集合)

说明

集合就是一个不重复值的组合,key值相同下value值不重复,返回插入的个数,key后 面可跟多个value值

基本命令:

插入:

sadd myset 1

sadd myset 2

返回全部value:

smember myset

删除单个value:

srem myset 1

查看集合数据个数:

scard myset

……

使用场合:

1.微博关注列表

2.聊天室

……

Sorted set(有序集合)

说明

Sorted Sets是将 Set 中的元素增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列

基本命令

插入(key,score,value)

zadd myzset 80 xiaoming

zadd myzset 90 xiaohong

获取指定值得分数

zscore myzset xiaoming

删除指定的值

zrem myzset xiaoming

使用场景

1.排行榜

……

获取前100名

zrevrange myzset 0 99

获取一个用户的排名

zrank myzset xiaoming

其他使用

1.发布和订阅

参考: http://www.tuicool.com/articles/6VBbIjQ

2.事物的支持

redis命令的参考网站

http://redis.cn/

使用缓存需要注意

1.缓存穿透

缓存不存在,查询DB,就会造成每一次请求都查询DB

2.缓存雪崩

缓存同时失效,请求全部转发到DB,DB可能会压力过重