redis使用

安装
apt-get install redis-server```

进入cli控制台

str命令讲解
set

key value```

setnx  设置k  防止重复 .如果重复会直接返回0
setnx key value


setex 设置一个k  并且给有效期    expire
用法: setex k 生成时间(秒单位) v
setex key int(秒单位) value


ttl 以秒为单位返回 key的剩余生存时间
	key 不存在 -2
	key 存在没有设定时间  -1
	key 存在设定过期时间   返回剩余时间
ttl key



127.0.0.1:6379> set name yinkai
OK

127.0.0.1:6379> get name
“yinkai”

127.0.0.1:6379> set yinkai
(error) ERR wrong number of arguments for ‘set’ command
127.0.0.1:6379> set name anjing
OK
127.0.0.1:6379> get name
“anjing”
127.0.0.1:6379> setnx name yinkai
(integer) 0
127.0.0.1:6379> get name
“anjing”
127.0.0.1:6379> setnx age 18
(integer) 0
127.0.0.1:6379> setnx anage 18
(integer) 1
127.0.0.1:6379> get anage
“18”
127.0.0.1:6379> setex run 10 yinkaipaoyipao
OK
127.0.0.1:6379> get run
“yinkaipaoyipao”
127.0.0.1:6379> get run
(nil)
127.0.0.1:6379> setex action 30 macbookpro_2kuai
OK
127.0.0.1:6379> get action
“macbookpro_2kuai”
127.0.0.1:6379> ttl action
(integer) -2
127.0.0.1:6379> setex action 30 macbookpro_2kuai
OK
127.0.0.1:6379> ttl action
(integer) 28
127.0.0.1:6379> ttl action
(integer) 27
127.0.0.1:6379> ttl action
(integer) 26
127.0.0.1:6379> ttl action
(integer) 25
127.0.0.1:6379> ttl action
(integer) 24
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379>


------

批量设置 
mset k1 v1 k2 v2 k3 v3........

批量获取
mget k1 k2 k3 k4.......
127.0.0.1:6379> mset name luo age 18 sex 110
OK
127.0.0.1:6379> get sex
“110”
127.0.0.1:6379> mget name sex age
1) “luo”
2) “110”
3) “18”


批量设置不存在的 键和值(当其中有key不存在,则直接失败.)
msetnx k1 v1 k2 v2 k3 v3........

#### 1.str命令

**浏览量**(++ --)
incr 自增+1 返回自增之后的结果
decr 自减-1 返回自减之后的结果

incrby 键名 数值 (增加指定数量)
(若该字段不存在,则会先创建默认值为0的字段)
eg:incrby age 100
decrby 键名 数值 (减去指定数量)
eg:decrby age 100

del 键名 (删除指定键)


#### 2.hash命令

**存放二维数组**
hset 键名 字段 字段值
hget 键名 字段


**批量处理**
	hmset 键名 字段1 值1 字段2 值2 字段3 值3 ...
	hmget 键名 字段1 字段2 字段3 ...

**批量获取**
	hkeys 键名 (返回指定键名中的所有字段名)
	hvals 键名 (返回指定键名中的所有字段值)
	hlen  键名 (返回指定键值对中含有的段数量)
hgetall 键名 (返回指定键中所有的字段名+字段值)


**增删**
	hincrby 键名 字段名 数值 (给hash键红指定的整形字段添加数值)
		eg:hincrby 001 age 10
hdel 键名 字段1 字段2 字段3 ….(删除指定字段)
eg: hdel 001 age name


------

**del 和 hdel 区别**
	del 删除一整个价值对

​	hdel 只删除某个键值对的一个字段

hash小结
hset
hmset
hdel  del
hget hmget  hgetall hkeys hvals
hincrby
判断:hexists
	hexists 键名 字段名   (查询指定键值对中是否存在该字段, 存在返回1,不存在返回0)

<hr/>
list 是链表

特点是 :  有序  队列

先进后出

------

#### 3.链表命令

**创建插入**
	lpush 从队列左边插入数据
	rpush 从队列右边插入数据

**从左到右显示**
	lrange 键名 起始下标 终止下标  
			(从队列中获取指定的值,从左边开始)

------

**下标指定**: 0 第一个 1 第二个

​		 	-1 最后一个  -2 倒数第二个

**指定位置插入**
	linsert 键名 after|before 原值 新值

**删除指定元素**

​	lrem 键名 数量&方向 值 (删除指定数量的指定值,返回删除的数量)
n > 0 从头向尾搜索,删除 n 个元素
n < 0 从尾向头搜索,删除 n 的绝对值个元素
n = 0 删除所有指定值得元素


------

**提取链表中信息**
	lindex 键名 下标 (提取列表中指定下标的元素的值)
llen 键名 (获取列表的长度)


**设置链表信息**
	lset 键名 下标 内容 (设置指定下标内容,返回ok)

**删除元素(首尾)**
	lpop 键名 (左边删除一个元素,返回被删除的元素)
	rpop 键名 (右边删除一个元素,返回被删除的元素)
ltrim 键名 起始下标 截止下标 (截取指定首尾下标的元素)

rpoplpush 键名 源队列 目标队列 (从源队列右边移除最后一元素, 放入一个另一个队列的首部)
eg:
127.0.0.1:6379> lrange list 0 -1
7
6
5
4
3
127.0.0.1:6379> lrange rlist 0 -1
1
2
3
4
5
6
127.0.0.1:6379> rpoplpush list rlist
3
127.0.0.1:6379> lrange rlist 0 -1
3
1
2
3
4
5
6
127.0.0.1:6379> lrange list 0 -1
7
6
5
4


<hr/>
set 集合(string类型的无序集合,成员唯一)
集合中包含交集,并集,差集
(适用于推荐算法的实现)


####4.set命令

sadd 集合名 元素1 元素2 元素3 ...  (将一个或多个成员元素添加入集合)

smembers 集合名 (显示集合中所有的子元素)

srem 集合名 元素1 元素2 ...   (删除指定集合中一个或多个元素)

spop 集合名  (随机删除一个元素,并且返回删除的元素名)

sismember 集合名 元素  (判断指定元素是否在集合中,返回0/1)

scard 集合名 (统计集合元素的个数)

smove 来源集合 目标集合 元素 (将一个集合中的元素移动到另一个集合)

srandmember 集合名 [count] (返回一个或指定个随机元素组成的集合)

##### set 无序集合

1. **差集**
   sdiff 集合1  集合2 
   返回 集合1  集合2 的差集  以集合1 为主
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> sadd s85 1 2 3 4 5 6 7
(integer) 7
127.0.0.1:6379> sadd s86 6 7 8 9
(integer) 4
127.0.0.1:6379> sdiff s85 s86
1) “1”
2) “2”
3) “3”
4) “4”
5) “5”
127.0.0.1:6379> sdiff s86 s85
1) “8”
2) “9”
127.0.0.1:6379> sdiffstore diff_s s85 s86
(integer) 5
127.0.0.1:6379> smembers diff_s
1) “1”
2) “2”
3) “3”
4) “4”
5) “5”
127.0.0.1:6379>


------

2. **并集**
   sunion 集合1  集合2    并集
127.0.0.1:6379> sunion s85 s86
1) “1”
2) “2”
3) “3”
4) “4”
5) “5”
6) “6”
7) “7”
8) “8”
9) “9”
127.0.0.1:6379> sunionstore uni_s s85 s86
(integer) 9
127.0.0.1:6379> smembers uni_s
1) “1”
2) “2”
3) “3”
4) “4”
5) “5”
6) “6”
7) “7”
8) “8”
9) “9”
127.0.0.1:6379>


------

3. **交集**
   sinter 集合1  集合2   交集
127.0.0.1:6379> smembers s85
1) “1”
2) “2”
3) “3”
4) “4”
5) “5”
6) “6”
7) “7”
127.0.0.1:6379> smembers s86
1) “6”
2) “7”
3) “8”
4) “9”
127.0.0.1:6379> sinter s85 s86
1) “6”
2) “7”
127.0.0.1:6379> sinter s86 s85
1) “6”
2) “7”
127.0.0.1:6379> sinterstore inter_s s85 s86
(integer) 2
127.0.0.1:6379> smembers inter_s
1) “6”
2) “7”
127.0.0.1:6379>


------

4. store 存储结果集合

sdiffstore 新集合 集合1  集合2
把返回结果 写入新集合

sinterstore 新集合 集合1  集合2
把返回结果 写入新集合

sunionstore 新集合 集合1  集合2
把返回结果 写入新集合

smove 原集合 目标集合 值
把指定的值 从源集合 中 移动到目标集合

------

##### zset 有序集合

**区别**: set 无序  zset 有序

有序是如何有序的?
	使用 "分数"  .
	有序集合 给每一个元素 设定 "分数"

zadd key 分数1 v1 分数2 v2 分数3 v3 ......

zrange 集合 起始下标 截止下标 [withscores]
0 第一个 -1 最后一个
得到所有 0 -1

返回集合中 指定下标区间内元素
如果 加了 withscores 则 连分数一起返回

按照分数排序 从小到大



127.0.0.1:6379> zadd z85 120 yinkai 160 jq 170 xin 175 kui
(integer) 4
127.0.0.1:6379> zrange z85 0 -1
1) “yinkai”
2) “jq”
3) “xin”
4) “kui”
127.0.0.1:6379> zrange z85 0 -1 withscores
1) “yinkai”
2) “120”
3) “jq”
4) “160”
5) “xin”
6) “170”
7) “kui”
8) “175”


------

zrevrange 集合 起始下标 截止下标 [withscores]
0 第一个 -1 最后一个
得到所有 0 -1

返回集合中 指定下标区间内元素
如果 加了 withscores 则 连分数一起返回

按照分数排序 从大到小


------

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....]
并集存新集合

总结 :

1. **区别**
        是否允许重复元素   是否有序   有序的实现方式      应用场景
   集合               F                         F                null                     社交 好友推荐等
   有序集合        F                         T                分数                    排行榜 
   列表               T                         T                索引下标             队列 抽奖

2. **使用场景**

string
    计数器
    系统缓存(把对象 数组 串行化再存入string)

list
    队列
    最新N个数据
    实时分析正在发生的情况
    数据统计 
    防止垃圾邮件(set)

hash
    用户数据

set
    unique 操作 获取某段时间内所有数据的排重值
    共同好友  推荐好友
    统计网站访问的所有 独立IP(唯一性)
    实时反垃圾系统

zset
    排行榜(取 top N操作)
    需要 精准设定过期的应用(时间戳 score )

------

公司想要使用reids?怎么做?

第一步: 安装配置 redis
第二步: 安装配置 phpredis
第三步: 得知道基本的语句 5种数据类型  CURD操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值