redis数据类型
概述
- redis的键是字符串类型的
- Redis的键值可以使用物种数据类型:字符串,散列表,列表,集合,有序集合。
String
- 字符串是Redis中最基本的数据类型,它能够存储任何类型的字符串,包含二进制数据。可以用于存储邮箱,JSON化的对象,甚至是一张图片,一个字符串允许存储的最大容量为512MB
- 字符串在redis中二进制安全的,着意味着该类型的存入和获取的数据是相同的
- 二进制安全和数据安全是没有关系的
- 关系性数据库二进制不安全
- redis二进制数据安全
- 二进制安全和数据安全是没有关系的
- 增
- 赋值:==set key value==:设定key持有特定的字符串,如果该key存在则进行覆盖操作,总是 返回ok
- 查
- 取值:==get key==:获取key的value,如果与该key关联的value不是String类型,redis将返回错误信息因为get命令只能获取String value,如果该key不存在,返回nil
- 删除
- 删除 :==del key==:删除执行的key,返回值是数字类型,表示删除了几条数据
- 改
- getset key value:先获取key的值,然后设置该key的值
- ==incr key==:将指定的key的value原子性的递增1,如果该key不存在,其初始值是0,在incr之后其值为1,如果value的值不能转成整形,那么报错
- ==desc key==:同理,将指定的key的value原子性递减1
- incrby key increment:将指定的key的value增加increment
- decrby key increment:将指定的key的value减少increment
- ==append key value==:拼凑字符串,如果该key存在,则在原有的value后追加该 值,如果该key不存在,则重新创建一个key、value
- String使用环境
- 主要用于保存json格式 的字符串
hash
- redis中的hash类型可以 看成具有String key和String value的map容器,所以该类型非常适合于存储键值对的信息,每一个hash可以存储4294967295个键值对
- 增
- hset key field value:为指定的key设置field/value(键值对)
- hmset key field value [field2 value2]设置key中的多个field/value
- 查
- hmget key filed1 filed2…;获取 key中的多个field的值
- hgetall key :获取key中的所有的field-value
- hkeys key:获取所有的字段
- hvals key:获取所有的value
- hexists key field :判断指定的key中filed是否存在,1表示存在,0表示不存在
- hlen key:获取key所包含的field的数量
- 删除
- hdel key field [field]可以删除一个或者 多个字段,返回值是被删除的字段的个数
- del key:删除整个list
list
- redis中操作最多的是进行元素的增删
- 使用环境:做大数据集合的增删,任务队列
- 增
- ==lpush key value….== 从左端开始依次插入添加元素
- ==rpush key value….== 从右开始开始依次添加元素
- 查
- ==lrange key start end==:获取链表中的从start到end的元素的值,start、end从0开始计数,也可以为负数,若为-1表示链表尾部的元素,-2则表示倒数第二个,以此类推。。
- llen key:返回指定的key关联的链表中的元素的数量
- 删
- ==lpop key==:返回并且删除指定的key关联的链表中的第一个元素,即头部元素,如果该key不存在,返回nil,如果key存在,则返回链表的 头部元素
- ==rpop key==:从尾部弹出元素
- lrem key count value:(删除某种元素)删除count个值为value的元素,如果count大于0,从头向尾遍历并且删除count个值为value的元素,如果count小于0,则从尾向头遍历并且删除,如果count等于0,则删除链表中的所有等于value的元素
-
改
- lset key index value:(通过索引替换元素)设置链表中的index的角标的元素值,0代表链表的头元素,-1代表链表的尾元素,操作链表的角标不存在则抛出异常
linsert key before|after pivot value:在pivot元素前或者后出入value这个元素
==rpoplpush resource destination==:将链表中的尾部元素弹出并添加到头
- 两队排列:
- 循环对列:
set
- Java hashSet无序,不重复
- redis操作中,涉及到两个大数据集合的并集,交集,差集运算
- 增
- ==sadd key values…==向set中添加数据,如果该key的值已经有了则不会重复添加
- 查
- ==smembers key==:获取set中所有的成员
- sismember key member:判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在
- 删
- srem key members…删除set中的指定的成员
- ==集合运算==
- 差集:sdiff key1 key2 …:返回key1与key2中相差的成员,而且与key的顺序有关,即返回差集
- 实例:
- 交集运算:sinter key1 key2 key3…:返回交集
- 实例:
- 并集运算:sunion key1 key2 key3…;返回并集
- 实例:
- 差集:sdiff key1 key2 …:返回key1与key2中相差的成员,而且与key的顺序有关,即返回差集
- 扩展命令
- scard key:获取set中成员的数量
- srandmember key:随机返回set中的一个成员
- sdiffstore destination key1 key2 …;将key1 和 key2的差集保存在destination上
- sinterstore destination key1 key2 …;将key1 和 key2的交集保存在destination上
- sunionstore destination key1 key2 …;将key1 和 key2的并集保存在destination上
有序set集合zset
- 有序set集合用来做排行榜
- 添加元素:
- zadd key score member score2 member 2…将所有的成员以及成员的分数放到集合中,如果该元素已经存在使用新的分数替换原来的分数,返回值是新加入到集合中的元素个数,不包含之前已经存在的元素
- 获取元素:
- zscore key member:返回指定成员的值
- zcard key:获取集合中的成员数量
- zrange key start end [withscores]获取集合中角标为start-end的成员,[withscores]参数表名返回的成员包含其分数,==分数由小到大排序==
- 不包含分数
- 包含分数
- zrevrange key start end [withscores]获取集合中角标为start-end的成员,[withscores]参数表名返回的成员包含其分数,==分数由大到小排序==,适用于排行榜
- 删除元素:
- zrem key member..移除集合中的指定的成员,可以指定多个成员
- zremrangebyrank key start stop:按照排名范围删除元素
- zremrangebyscore key min max:按照分数范围删除元素
- 扩展命令:
- zrank key member:返回成员在集合中的排名,索引(从小到大)
- zrevrank key member :返回成员在集合中的排名,索引(从大到小)
- zrangebyscore key min max [withscores] [limit offset count]:返回分数在[min,max]的成员并按照分数从低到高排序,[withscores]:显示分数:[limit offset count]:offset,表名从角标为offset的元素开始并返回count个成员
- zincrby key increment member:设置指定成员增加的分数,返回值是更改后的分数
通用命令
- ==keys pattern==:获取所有的域pattern匹配的key,返回所有与该key匹配的keys
- 通配符:*表示任意0个或多个任意 字符
- ?表示任意一个字符
- 例子:
- keys * 查询所有的key。
- keys ???? 查询所有的只有四个字符的key。
- keys *name* 查询所有的包含name的key。
- ==dle key1 key2==….;删除指定的key。
- exists key:判断该key是否存在,1代表存在,0代表不存在
- rename key newkey:为当前的key重命名
- ==expire key seconds==:设置过期时间,单位:秒
- ==ttl key==:获取该key所剩的超时时间,如果没有设置超时,返回-1,如果返回-2表示超时不存在
- ==type key==:获取指定的key的值类型,该命令将以字符串的格式返回,返回的字符串为String,list,set,hash,zset,如果key不存在返回none。
扩展命令
- quit:退出客户端
- dbsize:返回当前数据库中key的数目
- info:查看redis数据
- ping:如果返回pong表示连接正常
- echo:在命令行打印一些内容