redis 五种数据类型
redis 数据类型
redis的五种数据类型是:1、string(字符串);2、hash(哈希);3、list(列表);4、set(集合);5、sort set (有序集合)。其中,string(字符串)是redis中最基本的数据类型,一个key对应一个value,string 可以包含任何数据
字符串string
字符串是所有编程语言中最常见和最常用的数据类型,而且也是redis最基本的数据类型之一,而且redis中所有key的类型都是字符串,它是一个由字节组成的序列,在Rediss中是二进制安全的。这意味着该类型可以接受任何格式数据,如JPEG图像数据和Json对象说明信息。它是标准的key-value,通常用于存储字符串、整数和浮点。Value可容纳高达512MB的数据
添加一个key
//设置一个key value
set name liwenchao
//设置一个3秒的key,value, 3秒后查询就为nil
set name2 lili ex 3
获取一个key的内容
//可以重复多次定义一个key
set name liwenchao
//如上面演示内容
get name
删除一个key
//删除name=liwenchao这个key
del name
批量设置多个key,value
//mset key1 value1 key2 value2
mset name1 liwenchao name2 gaolili
批量根据key获取多个value
//mget key1 key2
mget name1 name2
追加数据
//append key1 appendvalue
append name1 app
数值递增
//设置一个key,value为int的值
set num 10
//让num的value自动+1
incr num
数值递减
//让num的value自动-1
decr num
获取字符串key的长度
//获取key为name1的value的长度
strlen name1
判断key是否存在
//有会返回1,没有会返回0
exists name1
查看key的过期时间
//ttl 查看key的剩余生存时间
// -1为永不过期,
// -2没有这个key
// num key的剩余有效时间
重新设置key的过期时间
expire name3 120
取消key的过期时间变为永久
persist name3
列表list
列表是一个双向可读可写的管道,其头部是左侧,尾部是右侧,一个列表可以最多包含2^32-1个元素,即4294967295个元素
生成列表并插入数据
//创建list1的列表并插入value1,value2,value3,value3在列表的最左侧
lpush list1 value1 value2 value3
获取列表长度
llen list
向列表追加数据
//从左边追加
lpush list1 name1
//从右边追加
rpush list1 name2
获取列表指定范围数据
//name4在最左边,序列号为0 ,name3序列号为1
lrange list2 1 2
//如果只有4个元素。0-99可以打印所有的
lrange list2 0 99
移除左右一个元素
//从列表右边删除第一个
rpop list2
//从列表左边删除第一个
lpop list2
集合set
set是string类型的无序集合,集合中的成员是唯一的,这就意味着集合中不能出现重复的数据,可以在两个不同的集合中对数据进行比对并取值
生成集合key
//生成无序集合set1
sadd set1 v2 v5
追加数据
//可以看到加入相同数据时,返回为0,表示没变化
sadd set1 v2
查看集合所有数据
//获取无序集合set1的所有数据
smembers set1
获取集合的差集,交集,并集
//差集,set1有而set2没有的
sdiff set1 set2
//交集,set1有,set2也有的
sinter set1 set2
//并集,set1和set2元素的集合并去重
sunion set1 set2
有序集合
redis有序集合和集合一样,也是string类型元素的集合,且不允许重复的成员,不同的是每个元素都会关联一个double双精度浮点数类型的分数,redis正是通过该分数来为集合中的成员进行从小到大的排序,有序集合成员是唯一的,但分数却可以重复,集合是通过hash表实现的,所以添加,删除,查找的复杂度是O(1),集合中最大的成员数是2^32-1,每个集合可以存储40多亿成员
生成有序集合
//生成有序集合zset1
zadd zset1 1 v1
//获取类型
type zset1
//一次添加多个元素
zadd zset2 1 v1 2 v2 3 v3
集合排行
//显示所有key,value
zrevrange zset2 0 -1 withscores
//显示集合zset2内所有的key
zrange zset2 0 -1
获取集合长度
zcard zset1
基于索引返回数值
//id号从1到3的
zrange zset1 1 3
返回某个数值的索引
zrank zset2 v2
哈希hash
hash是一个string类型的feild和value的映射表,hash特别是和用于存储对象,redis中每个hash可以存储40多亿键值对
生成hash key
//设置一个键值对,我这里设置两个的时候报错了,按理说不应该报错的,待观察
hset hash1 name liwenchao
type hash1
获取hash key字段值
//获取key为name的键值对的值
hget hash1 name
删除一个hash key的字段
hdel hash1 name
获取所有hash表中的key
hkeys hash1
获取指定hash的所有key,value
hgetall hash1