redis数据类型(命令)

一、数据结构

Redis 是一种面向“键/值”对类型数据的分布式 NoSQL 数据库系统,特点是
高性能,持久存储,适应高并发的应用场景。

二、键 key

1、关于 key 的几条规则:

* 不易太长的键值,容易消耗内存,而且在数据中查找这类键值的计算成本很高。
* 太短的键值也不是很好,不容易知道键名的含义,过于简单。
* 最好坚持一种模式。例如:”object-type:id:field”就是个不错的注意,像这样”user:1000:password”。我喜欢对多单词的字段名中加上一个点,就像这样:”comment:1234:reply.to”。

2、Redis设置Key的过期时间 – EXPIRE命令

* RENAME :重新生成一个带生存时间的key,与原来的key的生存时间一致,名字不同。
* PERSIST :移除key的生存时间,让 key 重新成为一个『持久的』(persistent) key 。
* EXPIRE:改变原来key的生存时间。(没有的新增生存时间)

二、redis命令

哈希(Hash)

数据结构模版:
在这里插入图片描述
基本命令:

  • hset 单条数据,field有更新,没有新增

      hset	key_name field value
    
  • hsetnx 单条数据,field不存在,才添加成功

      hsetnx key_name field value
    
  • hmset 多条数据新增

      hmset key_name field value [field value ...]
    
  • hget 取单条value

      hget key_name field		
    
  • hmget 取多条value

      hmget key_name field [field ...]
    
  • hgetall 取全部数据

      hgetall key_name 
    
  • hdel 删除指定元素(一个或多个)

      hdel key_name field [field ...]
    
  • hlen 获取hash表的长度

      hlen key_name 
    
  • hexists 验证HASH表中是否存在指定的KEY-VALUE

      hexists key_name field
    
  • hincrby 根据HASH表的KEY,为KEY对应的VALUE自增参数VALUE。

      hincrby key_name field int(数量)
    
  • hincrbyfloat 根据HASH表的KEY,为KEY对应的VALUE自增参数VALUE。浮点型

      hincrbyfloat key_name field float(浮点型 )
    
  • hkeys 取得HASH表中的KEYS,以数组形式返回。

      hkeys key_name 
    
  • hvals 取得HASH表中所有的VALUE,以数组形式返回。

      hvals key_name 
    

有序集合(Zset)

数据结构模版:
在这里插入图片描述

  • zadd 将元素及其分数添加到集合中,存在时,更新;不存在,添加
	语法:zadd key score value
  • zscore 获得指定成员的分数
	语法:zscore key value
  • zrange
	作用:取得特定范围内的排序元素,0代表第一个元素,1代表第二个以此类推。-1代表最后一个,-2代表倒数第二个...,参数WITHSCORES指定显示分数
	语法:zscore key start stop [withscores]
	包含stop
	若stop索引超过集合长度,则返回全部存在的元素
	若start超过了集合的长度,则为空
	分数相同时,按照字典的顺序排序
	注:==类似mysql的between...and..==
  • zrevrange
	作用:与 * zrange * 相反
	* zrange *->正序
	* zrevrange *->倒序
  • zRangeByScore 从小到大排序查询
	语法:zrangebyscore key min max [withscores] [limit offset count]
	LIMIT 必须指定偏移量, 在指定数量
  • zRevRangeByScore 从大到小排序查询,与zrangebyscore相反
	语法:zrangebyscore key max min [withscores] [limit offset count]
  • zincrby
	作用: 操作某个元素的分数,返回操作之后的分数
	语法: ZINCRBY (key increment value)
	value存在,在原基础上增加(increment)的值,value不存在,直接添加
  • zcard/zsize
	作用: 获得集合中元素的数量
	语法: ZCARD (key)
  • zcount
	作用: 指定分数范围内的元素个数
	语法: ZCOUNT (key min max)
  • zrem/zdelete
	作用: 删除一个或者多个元素,返回删除元素的个数
	语法: ZREM (key member,member ...)
  • zRemRangeByScore
	作用: 按照分数范围删除元素(score的值)
	语法: ZREMRANGEBYSCORE (key min max)
  • zRemRangeByRank
	作用: 按照分数从小到大的顺序, 删除指定索引范围内的所有的元素
	语法: ZREMRANGEBYRANK (key start stop)
  • zrank
	作用: 按照分数从小到大的顺序, 获得指定元素的排名(索引第几个,0开始)
	语法: ZRANK (key value)
  • zrevrank
	作用:与zrank相反
  • ZINTERSTORE
	作用: 计算有序集合的交集,并将结果保存起来

	语法: ZINTERSTORE destination numkeys key key...
	[WEIGHTS weight weight...] [AGGREGATE SUM|MIN|MAX]

	默认是分数求和
	destination 指定目标集合
	numkeys 指定集合的个数
	key 指定集合名称
	WEITHGS 指定权重
	AGGEGATE 分数的计算方式
==例如:==
	<?php
	# 有序集 mid_test
	redis 127.0.0.1:6379> ZADD mid_test 70 "Li Lei"
	(integer) 1
	redis 127.0.0.1:6379> ZADD mid_test 70 "Han Meimei"
	(integer) 1
	redis 127.0.0.1:6379> ZADD mid_test 99.5 "Tom"
	(integer) 1

	# 另一个有序集 fin_test
	redis 127.0.0.1:6379> ZADD fin_test 88 "Li Lei"
	(integer) 1
	redis 127.0.0.1:6379> ZADD fin_test 75 "Han Meimei"
	(integer) 1
	redis 127.0.0.1:6379> ZADD fin_test 99.5 "Tom"
	(integer) 1

	# 交集
	redis 127.0.0.1:6379> ZINTERSTORE sum_point 2 mid_test fin_test
	(integer) 3

	# 显示有序集内所有成员及其分数值
	redis 127.0.0.1:6379> ZRANGE sum_point 0 -1 WITHSCORES     
	1) "Han Meimei"
	2) "145"
	3) "Li Lei"
	4) "158"
	5) "Tom"
	6) "199"
	?>
  • ZUNIONSTORE
	作用: 计算有序集合的并集,并将结果保存起来

	语法: ZINTERSTORE destination numkeys key key...
	[WEIGHTS weight weight...] [AGGREGATE SUM|MIN|MAX]

	默认是分数求和
	destination 指定目标集合
	numkeys 指定集合的个数
	key 指定集合名称
	WEITHGS 指定权重
	AGGEGATE 分数的计算方式
==例如:==
	<?php 	
	redis 127.0.0.1:6379> ZRANGE programmer 0 -1 WITHSCORES
	1) "peter"
	2) "2000"
	3) "jack"
	4) "3500"
	5) "tom"
	6) "5000"

	redis 127.0.0.1:6379> ZRANGE manager 0 -1 WITHSCORES
	1) "herry"
	2) "2000"
	3) "mary"
	4) "3500"
	5) "bob"
	6) "4000"

	redis 127.0.0.1:6379> ZUNIONSTORE salary 2 programmer manager WEIGHTS 1 3   # 公司决定加薪。。。除了程序员。。。
	(integer) 6

	redis 127.0.0.1:6379> ZRANGE salary 0 -1 WITHSCORES
	1) "peter"
	2) "2000"
	3) "jack"
	4) "3500"
	5) "tom"
	6) "5000"
	7) "herry"
	8) "6000"
	9) "mary"
	10) "10500"
	11) "bob"
	12) "12000"
	?>

集合(Set)

数据结构模版:
在这里插入图片描述

  • sadd
	作用:添加一个或多个元素
	语法:sadd(key,values)
  • scard
	作用:获取key(name)所对应的个数;如,mysql中的count
	语法:scard(key)
  • sdiff
	作用:在第一个name(key)对应的集合中且不在其他name(key)对应的集合的元素集合,多个key里内容的差集。(第一个有,其他都没有)
	语法:sdiff(key1,key2,key3...)
  • sdiffstore
	作用:获取第一个name(key)对应的集合中且不在其他name(key)对应的集合,再将其新加入到dest对应的集合中;几个key的差集,存入另一个新的key中。
	语法:sdiffstore(dest,key1,key2,key3...)
  • sinter
	作用:获取多一个name(key)对应集合的并集,(取集合里都有的值)
	语法:sinter(key1,key2,key3....)
  • sinterstore
	作用:获取多一个name(key)对应集合的并集,再讲其加入到dest对应的集合中。
	语法:sinterstore(dest,key1,key2,key3....)
  • sismember
	作用:检查value是否是name(key)对应的集合的成员
	语法:sismember(key,value)
  • smembers
	作用:获取name(key)对应的集合的所有成员(取所有值)
	语法:smembers(key)
  • smove
	作用:将某个成员从一个集合中移动到另外一个集合,
	语法:smove(src,dst,value)
	注:src移出,dst移入
  • spop
	作用:从集合的右侧(尾部)移除一个成员,并将其返回;类似数组中的array_pop
	语法:spop(key)
  • srandmember
	作用:从name(key)对应的集合中随机获取 numbers 个元素
	语法:srandmember(key,numbers)
	注:numbers(数量)
  • srem
	作用:在name(key)对应的集合中删除某些值
	语法:srem(key,values)
  • sunion
	作用:获取多一个name(key)对应的集合的并集
	语法:sunion(key1,key2,key3...)
  • sunionstore
	作用:获取多一个name(key)对应的集合的并集,并将结果保存到dest对应的集合中
	语法:sunionstore(dest,key1,key2,key3....)

列表(List)

数据结构模版:
在这里插入图片描述

  • lpush
	作用:在name对应的list中添加元素,(多个)每个新的元素都添加到列表的最左边(头部)
	语法:lpush(key,values)
	扩展:rpush(key,values):最右边(底部)添加
  • lpushx(有key添加)
	作用:在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边
	语法:lpushx(key,values)
	扩展:rpushx(key,values);最右边(底部)添加
  • llen
	作用:获取列表长度
	语法:llen(key)
  • blpop
	作用:移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
	语法:blpop(key[key1,key2],timeout)
	注:有值弹出,没值timeout(时间值,秒)后弹出nil。
  • brpop
	作用:与blpop相反,弹最后一个出去
  • brpoplpush
	作用:从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
	语法:brpoplpush(key1,key2,time)
	注:弹出key1的最后一个,到key2的第一个
  • lindex
	作用:通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
	语法:lindex(索引:0,-1)等
  • linsert
	作用:在列表的元素前或者后插入元素。 
	当指定元素不存在于列表中时,不执行任何操作。 
	当列表不存在时,被视为空列表,不执行任何操作。 
	如果 key 不是列表类型,返回一个错误。
	语法:linsert(key before value , new_value)
  • lpop
	作用:移除并返回列表的第一个元素
	语法:lpop(key)
  • rpop
	作用:移除并返回列表的最后一个元素
	语法:rpop(key)
  • lrange
	作用:获取列表指定范围内的元素
	语法:lrange(key start end)
	注:0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 
	你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
  • lrem
	作用:移除列表元素
	语法:lrem(key count value)
	注:COUNT 的值可以是以下几种:
	`count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
	count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
	count = 0 : 移除表中所有与 VALUE 相等的值。`
  • lset
	作用:通过索引来设置元素的值。
	当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。
	语法:lset(key 索引 value)
  • ltrim
	作用:对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
	语法:ltrim (key start stop)
  • rpoplpush
	作用:移除列表的最后一个元素,并将该元素添加到另一个列表并返回
	语法:rpoplpush(key new_key)

字符串(string)

数据结构模版:
在这里插入图片描述

  • set
	作用:设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。
	语法:set(key,value)
  • get
	作用:获取指定 key 的值。如果 key 不存在,返回 nil 。如果key 储存的值不是字符串类型,返回一个错误。
	语法:get(key)
  • getrange
	作用:获取存储在指定 key 中字符串的子字符串。
	           字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内)。
	语法:getrange(key,start,end)
  • getset
	作用:设置指定 key 的值,并返回 key 旧的值。
	语法:getset(key,value)
	返回值:返回给定 key 的旧值。 当 key 没有旧值时,即 key 不存在时,返回 nil 。
	当 key 存在但不是字符串类型时,返回一个错误。
  • getbit
	作用:对 key 所储存的字符串值,获取指定偏移量(offset)上的位(bit)。
	语法:getbit(key,offset)
  • mget
	作用:获取所有(一个或多个)给定 key 的值。
	语法:mget(key1,key2......)
  • setbit
	作用:对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。
	语法:setbit(key ,offset)
  • setex
	作用:将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。
	语法:setex(key,timeout,value)
	注:ttl :获取过期时间(秒)
  • setnx
	作用:只有在 key 不存在时,设置 key 的值。
	语法:setnx(key ,value)
  • setrange
	作用:用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。
	语法:setrange(key,offset,value)
  • strlen
	作用:返回 key 所储存的字符串值的长度。
	语法:strlen(key)
  • mset
	作用:同时设置一个或多个 key-value 对。
	语法:mset(key1 value1,key2 value2........)
  • msetnx
	作用:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
	语法:msetnx(key1,value1,key2, value2.........)
  • psetex
	作用:以毫秒为单位设置 key 的生存时间。类似(setex)
	语法:psetex(key,timeout,value)
	注:pttl :获取过期时间(毫秒)
  • incr
	作用:将 key 中储存的数字值增一。
	语法:incr(key)
	注:值不为数字,则返回一个错误
  • incrby
	作用:将 key 所储存的值加上给定的增量值(increment) 。
	语法:incrby(key,incr)
  • incrbyfloat
	作用:将 key 所储存的值加上给定的浮点增量值(increment) 。
	语法:incrbyfloat(key ,float)
  • decr
	作用:将 key 中储存的数字值减一。
	语法:decr(key)
  • decrby
	作用:key 所储存的值减去给定的减量值(decrement) 。
	语法:decrby(key , decr)
  • append
	作用:如果 key 已经存在并且是一个字符串, APPEND 命令将 value 追加到 key 原来的值的末尾。
	语法:append(key,new_value)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值