客户端连接
无密码 : 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命令的参考网站
使用缓存需要注意
1.缓存穿透
缓存不存在,查询DB,就会造成每一次请求都查询DB
2.缓存雪崩
缓存同时失效,请求全部转发到DB,DB可能会压力过重