Redis的数据类型

来源:互联网 发布:免费交朋友软件 编辑:程序博客网 时间:2024/06/05 14:46

Redis存储数据是以key,value形式进行存储。

key的数据类型都是字符串

而value有5种数据类型
String- - - - - - - - “小名,小红”
hash - - - - - - - - {username:”张三”,age:”18”} 可以对javaBean进行存储
list - - - - - - - - [1,2,3,4,5] 对应java中的LinkedList(链表,添加删除效率极高),允许重复
set - - - - - - - - [‘a’,’b’,’c’] 对应java中Hashset集合,不允许重复
有序的set集合 - - - - - - - -[5000 ‘a’,6000 ‘b’ ,10 ‘c’]

key名字可以自定义,但不宜过长,否则影响使用效率(因为搜索对应的key-value是按名字长度进行排序,名字越短排名越靠前),也不宜太短,否则影响阅读体验

redis命令-String命令

字符串类型是Redis中最为基础,常用的数据存储类型,字符串在Redis中是二进制安全的,这意味着该类型存入和获取的数据相同。在Redis中字符串类型的value最多可以容纳的数据长度为512MB。

二进制安全和数据安全是没有关系的。

Mysql-关系型数据库,二进制不安全。【乱码丢失数据,频繁的编解码导致,客户端需要编解码,服务端也需要编解码】

Redis-非关系型数据库,二进制安全【编解码只会发生在客户端,服务器收到二进制数据后直接保存硬盘,不会再进行编码操作】

常用命令:

赋值操作(增)set key value
删除操作(删)del key【返回值为Interger(x),即删除x条记录】
覆盖操作(改)set key valuekey之前存在过,重新赋值相当于覆盖】
取值操作(查)get key【若不存在该key,则返回(nil)】

扩展命令

先获取该key的值,再将其覆盖getset key value = => get key,set key value
将指定key的value原子性的递增1,如果该key不存在,其初始值为0,incr后该值为1,如果value不能转为整形,则操作失败并返回错误信息incr key
将指定key的value原子性的递减1,如果该key不存在,其初始值为0,decr 后该值为-1,如果value不能转为整形,则操作失败并返回错误信息decr key
拼接字符串,若key存在value值,则在原有的value后追加该值,若不存在,则新创建一个key/valueappend key value
将指定key的value值递增increment,若increment不为整形,则返回错误信息incrby key increment
将指定key的value值递减decrement,若increment不为整形,则返回错误信息decrby key decrement

String的使用环境:
主要用于保存json格式的字符串

redis命令-Hash命令

Redis中的Hash类型可以看成具有String key和String value的map容器,所以该类型非常适合存储键值对的信息。每一个Hash可以存储4294967295个键值对。

Hash- - - - - - - - {username:”张三”,age:”18”} —javaBean
Hash特点:若内容与String相同,则Hash占有的空间比String小。

常用命令:

赋单值操作hset key field(字段名)value(字段值) 【为指定的key设置field/value(键值对)】
赋多值操作hmset key field(字段名)value(字段值)[field(字段名)value(字段值)] 【为指定的key设置多个field/value(键值对)】
取单值操作hget key field(字段名)【在指定的key取出指定单个字段的value】
取多值操作hmget key field(字段名)[field(字段名)]【在指定的key取出指定字段的value】
取全值操作hgetall key field(字段名)[field(字段名)]【取出该key的所有值】
删除字段操作(如果Hash中没有字段,那么整个Hash都会被删除)hdel key field(字段名)[field(字段名)]【删除一个或多个字段】
删除整个Hash操作(如果Hash中没有字段,那么整个Hash都会被删除)hdel key

扩展命令:

为指定字段的值增加incrementhincrby key field increment
判断对应字段是否存在,存在返回1,不存在返回0hexists key field
获取key中包含字段的数量hlen key
获取key中包含所有字段名hkeys key
获取key中包含所有字段名的值hvals key

redis命令-list命令

特点:有序,可重复
常用命令:

赋值操作(左赋值)lpush key value[value...](从左边开始赋值)赋值操作(右赋值)rpush key value[value...](从右边开始赋值)
查看链表lrange key start endstartend为脚标索引)eg:    lrange list 0 -1(从头到尾都进行查看)
弹出操作lpop key(左弹出)返回并弹出指定的key关联的链表的第一个元素,即头部元素lpop key(右弹出)返回并弹出指定的key关联的链表的最末一个元素,即尾部元素

扩展命令

删除某种元素(效率低下)lrem key count value删除count个值为value的元素,若值大于0,则从左至右删除。若值小于0,则从右至左删除。等于0则全部删除。
通过索引替换元素(效率不高)lset key index value替换指定index的元素,将其改变为value。若不存在则抛出异常
通过元素插入元素(效率不高)linsert key before|after pivot value在pivot元素前或者后插入value这个元素
查看list长度llen key
循环操作rpoplpush rec des(将rec链表的尾部元素弹出作为des链表的头部元素,当rec=dec时做循环操作,适合做任务队列使用)

redis命令-set命令

特点:无序 不重复

Redis中,涉及到两个大数据集合的并集,交集,差集运算使用set集合。

常用命令:

赋值操作sadd key value [value...]当你添加重复元素时,无法添加成功
删值操作srem key value [value...]
取值操作smembers key(取出所有值)
判断某个元素是否在集合中sismember key member(若有member这元素,则返回1,若没有,则返回0

集合运算

差集运算sdiff key1 key2 key3 [key...](返回key1与key2中相差的成员,与key的顺序相关)
交集运算sinter key1 key2 key3 [key...](返回交集部分)
并集运算sunion key1 key2 key3 [key...](返回并集部分)

扩展命令

查看set长度scard key
随机返回set中的一个成员srandmember key

差集运算(结果存于另外一个指定的set)
sdiffstore des key1 key2 key3 [key…](返回key1与key2中相差的成员,与key的顺序相关)

```交集运算(结果存于另外一个指定的set)sinterstore key1 key2 key3 [key...](返回交集部分)
并集运算(结果存于另外一个指定的set)sunionstore key1 key2 key3 [key...](返回并集部分)

redis命令-有序set命令

特点:有序 不重复

实现有序的方式:每个元素都需要手动赋予一个数字(可用于做排行榜)

赋值操作zadd key score value [score1 value1...]重复操作时会覆盖
取值操作(获得指定成员的分数)zscore key member
查看有序set长度zcard key
删除元素根据值进行删除zrem key member[member...](移除集合中的成员,可以指定多个成员)根据脚标范围删除zremrangebyrank key start end根据分数范围删除zremrangebyscore key min max
查询有序set的元素zrange key start end [WITHSCORES](正序查询--分数从小到大)获取集合脚标中start-end的成员,可以选择是否显示其对应的分数zrevrange key start end [WITHSCORES](反序查询--分数从大到小)获取集合脚标中start-end的成员,可以选择是否显示其对应的分数zrangebyscore key min max [WITHSCORES] limit start count(与mysql使用方法一致)获取分数范围中中min-max的成员,可以选择是否显示其对应的分数
设置指定成员增加的分数zincrby key increment member
获取指定成员的排名zrank key member
获取指定分数范围的成员数量zcount key min max 
原创粉丝点击