Redis-使用
安装
sudo apt-get install redis-server
进入cli控制台
redis-cli
str命令讲解
setset key value
setnx 设置k 防止重复 .如果重复会直接返回0
1 | setnx key value |
setex 设置一个k 并且给有效期 expire
用法: setex k 生成时间(秒单位) v
1 | setex key int(秒单位) value |
ttl 以秒为单位返回 key的剩余生存时间
key 不存在 -2
key 存在没有设定时间 -1
key 存在设定过期时间 返回剩余时间
1 | ttl key |
1 | 127.0.0.1:6379> set name yinkai |
批量设置
mset k1 v1 k2 v2 k3 v3……..
批量获取
mget k1 k2 k3 k4…….
1 | 127.0.0.1:6379> mset name luo age 18 sex 110 |
批量设置不存在的 键和值(当其中有key不存在,则直接失败.)
msetnx k1 v1 k2 v2 k3 v3……..
1.str命令
浏览量(++ –)
1 | incr 自增+1 返回自增之后的结果 |
2.hash命令
存放二维数组
1 | hset 键名 字段 字段值 |
批量处理
hmset 键名 字段1 值1 字段2 值2 字段3 值3 …
hmget 键名 字段1 字段2 字段3 …
批量获取
hkeys 键名 (返回指定键名中的所有字段名)
hvals 键名 (返回指定键名中的所有字段值)
hlen 键名 (返回指定键值对中含有的段数量)
1 | hgetall 键名 (返回指定键中所有的字段名+字段值) |
增删
hincrby 键名 字段名 数值 (给hash键红指定的整形字段添加数值)
eg:hincrby 001 age 10
1 | hdel 键名 字段1 字段2 字段3 ....(删除指定字段) |
del 和 hdel 区别
del 删除一整个价值对
hdel 只删除某个键值对的一个字段
hash小结
hset
hmset
hdel del
hget hmget hgetall hkeys hvals
hincrby
判断:hexists
hexists 键名 字段名 (查询指定键值对中是否存在该字段, 存在返回1,不存在返回0)
list 是链表
特点是 : 有序 队列
先进后出
3.链表命令
创建插入
lpush 从队列左边插入数据
rpush 从队列右边插入数据
从左到右显示
lrange 键名 起始下标 终止下标
(从队列中获取指定的值,从左边开始)
下标指定: 0 第一个 1 第二个
-1 最后一个 -2 倒数第二个
指定位置插入
linsert 键名 after|before 原值 新值
删除指定元素
lrem 键名 数量&方向 值 (删除指定数量的指定值,返回删除的数量)
1 | n > 0 从头向尾搜索,删除 n 个元素 |
提取链表中信息
lindex 键名 下标 (提取列表中指定下标的元素的值)
1 | llen 键名 (获取列表的长度) |
设置链表信息
lset 键名 下标 内容 (设置指定下标内容,返回ok)
删除元素(首尾)
lpop 键名 (左边删除一个元素,返回被删除的元素)
rpop 键名 (右边删除一个元素,返回被删除的元素)
1 | ltrim 键名 起始下标 截止下标 (截取指定首尾下标的元素) |
set 集合(string类型的无序集合,成员唯一)
1 | 集合中包含交集,并集,差集 |
####4.set命令
sadd 集合名 元素1 元素2 元素3 … (将一个或多个成员元素添加入集合)
smembers 集合名 (显示集合中所有的子元素)
srem 集合名 元素1 元素2 … (删除指定集合中一个或多个元素)
spop 集合名 (随机删除一个元素,并且返回删除的元素名)
sismember 集合名 元素 (判断指定元素是否在集合中,返回0/1)
scard 集合名 (统计集合元素的个数)
smove 来源集合 目标集合 元素 (将一个集合中的元素移动到另一个集合)
srandmember 集合名 [count] (返回一个或指定个随机元素组成的集合)
set 无序集合
- 差集
sdiff 集合1 集合2
返回 集合1 集合2 的差集 以集合1 为主
1 | 127.0.0.1:6379> flushdb |
- 并集
sunion 集合1 集合2 并集
1 | 127.0.0.1:6379> sunion s85 s86 |
- 交集
sinter 集合1 集合2 交集
1 | 127.0.0.1:6379> smembers s85 |
- store 存储结果集合
sdiffstore 新集合 集合1 集合2
把返回结果 写入新集合
sinterstore 新集合 集合1 集合2
把返回结果 写入新集合
sunionstore 新集合 集合1 集合2
把返回结果 写入新集合
smove 原集合 目标集合 值
把指定的值 从源集合 中 移动到目标集合
zset 有序集合
区别: set 无序 zset 有序
有序是如何有序的?
使用 “分数” .
有序集合 给每一个元素 设定 “分数”
zadd key 分数1 v1 分数2 v2 分数3 v3 ……
zrange 集合 起始下标 截止下标 [withscores]
1 | 0 第一个 -1 最后一个 |
1 | 127.0.0.1:6379> zadd z85 120 yinkai 160 jq 170 xin 175 kui |
zrevrange 集合 起始下标 截止下标 [withscores]
1 | 0 第一个 -1 最后一个 |
zrem key 值1 [值2 …..]
删除 集合中 指定的值
zincrby key 增量 值
给 集合中指定值得分数(score) 加上 增量
zrank key 值
返回集合中指定值的下标 按照 (score)从小到大排序
zrevrank key 值
返回集合中指定值的下标 按照 (score)从大到小排序
zcount key 起始分数 截至分数
统计 该集合 score 在给定分数区间内的元素个数
zcard key
返回集合元素个数
zinterstore key 取交集集合个数 集合1 集合2 [集合3….]
交集 存新集合
zunionstore 取并集集合个数 集合1 集合2 [集合3….]
并集存新集合
总结 :
区别
是否允许重复元素 是否有序 有序的实现方式 应用场景集合 F F null 社交 好友推荐等
有序集合 F T 分数 排行榜
列表 T T 索引下标 队列 抽奖使用场景
string
计数器
系统缓存(把对象 数组 串行化再存入string)
list
队列
最新N个数据
实时分析正在发生的情况
数据统计
防止垃圾邮件(set)
hash
用户数据
set
unique 操作 获取某段时间内所有数据的排重值
共同好友 推荐好友
统计网站访问的所有 独立IP(唯一性)
实时反垃圾系统
zset
排行榜(取 top N操作)
需要 精准设定过期的应用(时间戳 score )
公司想要使用reids?怎么做?
第一步: 安装配置 redis
第二步: 安装配置 phpredis
第三步: 得知道基本的语句 5种数据类型 CURD操作