Redis 五大数据类型

Redis数据类型

key + string , set , list , hash , zset
Redis 五大数据类型 --key
简单的Key-Value命令:
keys  * :			查询当前库的所有键
exists <key> : 		判断某个键是否存在
type <key> : 		查看键对应的数据的类型
del <key>  : 		删除某个键
expire <key> <seconds> : 
					为键值设置过期时间,单位秒。
ttl <key>  : 		查看还有多少秒过期,-1表示永不过期,-2表示已过期
dbsize  : 			查看当前数据库的key的数量
flushdb	:			清空当前库
flushall:			通杀全部库 
Redis 五大数据类型 --String

String是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,
一个key对应一个value。 String类型是二进制安全的。
意味着Redis的string可以包含任何数据。 比如jpg图片或者序列化的对象 。
String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M

String-命令:
get <key>:				查询对应键值
set <key>  <value>:		添加键值对
append <key> <value>:	将给定的<value> 追加到原值的末尾
strlen <key>:			获得值的长度
setnx <key> <value>:	只有在 key 不存在时设置 key 的值
incr <key>:	 			将 key 中储存的数字值增1
			 			只能对数字值操作,如果为空,新增值为1	 			
decr <key>:  			将 key 中储存的数字值减1
					    只能对数字值操作,如果为空,新增值为-1
incrby/decrby <key> <步长>:
						将 key 中储存的数字值增减。自定义步长。
mset  <key1>  <value1>  <key2>  <value2>  ..... 
						同时设置一个或多个 key-value对  						
mget  <key1>   <key2>   <key3> ..... 
						同时获取一个或多个 value  						
msetnx <key1>  <value1>  <key2>  <value2>  ..... 
						同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
getrange  <key>  <起始位置>  <结束位置>
						获得值的范围,类似java中的substring
setrange  <key>   <起始位置>   <value>
						用 <value>  覆写<key> 所储存的字符串值,从<起始位置>开始。
setex  <key>  <过期时间>   <value>
						设置键值的同时,设置过期时间,单位秒。
getset <key>  <value>:	以新换旧,设置了新值同时获得旧值。

Redis 五大数据类型 --list

单键多值
Redis 列表是简单的字符串列表,按照插入顺序排序。
你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

list-命令:
lpush/rpush  <key>  <value1>  <value2>  <value3> ....
						从左边/右边插入一个或多个值。
lpop/rpop  <key> 
						从左边/右边吐出一个值。
						值在键在,值亡键亡。
rpoplpush  <key1>  <key2>  
						从<key1>列表右边吐出一个值,插到<key2>列表左边。
lrange <key> <start> <stop>
						按照索引下标获得元素(从左到右)
lindex <key> <index>
						按照索引下标获得元素(从左到右)
llen <key>
						获得列表长度 
linsert <key>  before <value>  <newvalue>   
 						在<value>的前面插入<newvalue> 
lrem <key> <n>  <value>
						从左边删除n个value(从左到右)

Redis 五大数据类型 – set

Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重,
当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,
并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,
所以Redis的Set的添加,删除,查找的复杂度都是O(1)。

set–命令:
sadd <key>  <value1>  <value2> .....   
						将一个或多个 member 元素加入到集合 key 当中,
						已经存在于集合的 member 元素将被忽略。
smembers <key>			取出该集合的所有值。
sismember <key>  <value>
						判断集合<key>是否为含有该<value>值,有返回1,没有返回0
scard   <key>			返回该集合的元素个数。
srem <key> <value1> <value2> ....
						删除集合中的某个元素。
spop <key> <n> 			随机从该集合中吐出一个或多个值。
srandmember <key> <n>	随机从该集合中取出n个值,不会从集合中删除
sinter <key1> <key2> 	返回两个集合的交集元素。
sunion <key1> <key2>  	返回两个集合的并集元素。
sdiff <key1> <key2> 	返回两个集合的差集元素。
Redis 五大数据类型 – hash

Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
类似Java里面的Map<String,Object>

用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息
在这里插入图片描述

通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,
既不需要重复存储数据,也不会带来序列化和并发修改控制的问题
hash-命令:
hset <key>  <field>  <value>
						给<key>集合中的  <field>键赋值<value>
hget <key>  <field>   
						从<key>集合<field> 取出 value 
hmset <key>  <field1> <value1> <field2> <value2>...   
						批量设置hash的值
hexists key  <field>
						查看哈希表 key 中,给定域 field 是否存在。 
hkeys <key>   
						列出该hash集合的所有field
hvals <key>    
						列出该hash集合的所有value
hincrby <key> <field>  <increment> 
						为哈希表 key 中的域 field 的值加上增量 increment 
hsetnx <key>  <field> <value>
						将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .

Redis 五大数据类型 – zset

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。
不同之处是有序集合的所有成员都关联了一个评分(score) ,
这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。
集合的成员是唯一的,但是评分可以是重复了 。
因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。
访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

zset-命令:
zadd  <key> <score1> <value1>  <score2> <value2>...
						将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
zrange <key>  <start> <stop>  [WITHSCORES]   
						返回有序集 key 中,下标在<start> <stop>之间的元素
						带WITHSCORES,可以让分数一起和值返回到结果集。
zrangebyscore key min max [withscores] [limit offset count]
						返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
						有序集成员按 score 值递增(从小到大)次序排列。 
						返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。
						有序集成员按 score 值递增(从小到大)次序排列。 
 						同上,改为从大到小排列。 
zincrby <key> <increment> <value>
						为元素的score加上增量
zrem  <key>  <value>  
						删除该集合下,指定值的元素 
zcount <key>  <min>  <max> 
						统计该集合,分数区间内的元素个数 
zrank <key>  <value> 
						返回该值在集合中的排名,从0开始。
微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码 微信小程序毕业设计期末大作业项目源码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值