redis数据类型介绍
你也许已经知道Redis并不是简单的key-value存储,实际上他是一个数据结构服务器,支持不同类型的值。也就是说,你不必仅仅把字符串当作键所指向的值。下列这些数据类型都可作为值类型:
-
Strings(字符串):二进制安全的字符串,意味着redis的string可以包含任何数据。比如jpg图片或者序列化的对象。一个键最多能存储512MB。二进制安全是指,在传输数据的时候,能保证二进制数据的信息安全,也就是不会被篡改、破译;如果被攻击,能够及时检测出来。
-
Lists(列表):按插入顺序排序的字符串元素的集合。他们基本上就是链表(linked lists)。你可以一个元素到列表的头部(左边),或者添加一个元素到尾部(右边)。
-
Sets(无序集合):不重复且无序的字符串元素的集合。
-
Sorted sets(有序集合):不重复且有序的字符串元素的集合。类似Sets,但是每个字符串元素都关联到一个叫score浮动数值(floating number value)。里面的元素总是通过score进行着排序,所以不同的是,它是可以检索的一系列元素。Sorted sets的元素是唯一的,但是score是可以重复的。
-
Hashes(哈希):由field和关联的value组成的map,field和value都是字符串的。是一个键值对集合,特别适用于存储对象。
Redis key值是二进制安全的,这意味着可以用任何二进制序列作为key值,从形如”foo”的简单字符串到一个JPEG文件的内容都可以。空字符串也是有效key值。关于key的几条规则:
- key不要太长。例如1024字节的键值就不是个好主意,不仅因为消耗内存,而且在数据中查找这类键值的计算成本很高。
- key也不要太短,要见名知意。比如你要用“u:1000:pwd”来代替“user:1000:password”,这没有什么问题,但后者更易阅读,并且由此增加的空间消耗相对于key object和value object本身来说很小。当然,没人阻止您一定要用更短的键值节省一丁点儿空间。
- 使用统一的命名规则。例如:”object-type:username:field”就是个很不错的主意,见名知意。
- key区分大小写。例如:"user:password"和"user:PASSWORD"是两个不同的key。
redis数据类型常见的操作命令
在练习常用命令之前先启动redis-cli客户端,如何启动redis-cli客户端,参考:https://blog.csdn.net/guachiqi2340/article/details/109269400
或者使用在线redis测试工具,地址:https://try.redis.io/
注:在redis里,执行指令返回结果中,0表示否,1表示是。
-
Strings常用命令:
- set key value:设置指定key的值,示例:
set key1 value1
- setex key seconds value:给指定的key设置value,并设置key的过期时间,单位秒,(set with expire)示例:
setex name 5 zhagnsan
- setnx key value:当key不存在时设置key的值。(set if not exists),分布式锁的问题,示例:
setnx key2 helloworld
- append key value:追加指定key的值,示例:
append key1 hello
- get key:获取指定key的值,示例:
get key1
- getrange key start end:获取key中指定范围的value值,end为-1时,表示从start位置到value值的最后一个字符串,示例:
getrange key1 0 3
- setrange key offset value:替换key中指定offset偏移量的值,示例:
setrange key1 5 kitty
- strlen key:返回key所存储的字符串值的长度,示例:
strlen key1
- del key:删除指定的key,示例:
del key1
- incr key:如果key指定的值是integer类型,则值自增1,示例:
incr key1
- decr key:如果key指定的值是integer类型,则值自减1,示例:
decr key1
- incrby key number:如果key指定的值是integer类型,则值自增number个数值,示例:
incrby key1 5
- decrby key number:如果key指定的值是integer类型,则值自减number个数值,示例:
incrby key1 5
- mset key value [key value …]:批量设置多个key和值,示例:
mset a1 b1 a2 b2
- mget key value [key value …]:批量获取多个key的值,示例:
mget a1 a2
- getset key value:先get再set,示例:
getset name lisi
- set key value:设置指定key的值,示例:
-
Lists常用命令:
- lpush key element [element …] :给列表指定的key在头部(左边)设置多个元素,示例:
lpush numbers 1 2 3 4 5
- rpush key element [element …] :给列表指定的key在尾部(右边)设置多个元素,示例:
rpush numbers1 a b c d e
- lrange key start stop:获取key指定范围内的元素,stop为-1时,表示从start位置开始一直到list的最后一个元素,示例:
lrange numbers 1 3
- lpop key:弹出指定key头元素,即左边第一个元素,示例:
lpop numbers
- rpop key:弹出指定key:尾元素,即右边第一个元素,示例:
rpop numbers
- lindex key index:根据索引下标获得指定key的元素,示例:
lindex numbers 1
- llen key:获取指定key元素的个数,示例:
llen numbers
- lrem key count element:
- lpush key element [element …] :给列表指定的key在头部(左边)设置多个元素,示例:
-
Sets常用命令:
- sadd key member [member …]:给指定的key添加多个不重复的元素,示例:
sadd set1 1 2 3 4
- smembers key:查看指定key元素,示例:
smembers set1
- sismember key member:判断指定的key是否存在指定的值,示例:
sismember set1 2
- scard key:获取集合指定key元素的个数,示例:
scard set1
- srem key member [member …]:删除集合中指定key的元素,示例:
srem set1 1 2
- srandmember key [count]:随机获取集合中指定key的count个值,count默认为:1,示例:
srandmember set1 2
- spop key [count]:出栈count个指定key的值,示例:
spop set1 2
- smove source destination member:将source的member元素移动到destination去,示例:
smove set1 set2 3
- sdiff key [key …]:返回指定key的元素与其他多个key的差集,示例:
sdiff set1 set2
- sinter key [key …]:返回指定key的元素与其他多个key的交集,示例:
sinter set1 set2
- sunion key [key …]:返回指定key的元素与其他多个key的并集,示例:
sunion set1 set2
- sadd key member [member …]:给指定的key添加多个不重复的元素,示例:
-
Sort Sets常用命令:
- zadd key score member [score member …] :给指定的key添加多个不重复的元素,score用于元素的排序,示例:
zadd zset1 10 b 20 a 30 e 40 c 50 d
- zrange key start stop [WITHSCORES]:查询从start到stop区间指定key的元素(顺序),stop为-1时,表示从start开始到最后一个元素,可选参数WITHSCORES表示带score显示,示例:
zrange zset1 0 -1 withscores
- zrevrange key start stop [WITHSCORES]:查询从start到stop区间指定key的元素(逆序),stop为-1时,表示从start开始到最后一个元素,可选参数WITHSCORES表示带score显示,示例:
zrevrange zset1 0 -1 withscores
- zrangebyscore key min max [WITHSCORES] [LIMIT offset count]:查询从min到max区间的score值的指定key的元素(顺序),可选参数WITHSCORES表示带score显示,可选参数LIMIT offset count用于分页显示,示例:
zrangebyscore zset1 21 50 withscores
- zrevrangebyscore key min max [WITHSCORES] [LIMIT offset count]:查询从min到max区间的score值的指定key的元素(逆序),可选参数WITHSCORES表示带score显示,可选参数LIMIT offset count用于分页显示,示例:
zrangebyscore zset1 21 50 withscores
- zrem key member [member …]:移除集合指定key的一个或者多个元素,示例:
zrem zset1 e a
- zcard key:返回集合指定key元素的个数,示例:
zcard zset1
- zcount key min max:返回集合指定key元素在min和max的score区间的个数,示例:
zcount zset1 31 50
- zrank key member:返回集合指定key的member元素的下标(通过score顺序排序),示例:
zrank zset1 d
- zrevrank key member:返回集合指定key的member元素的下标(通过score逆序排序),示例:
zrevrank zset1 d
- zadd key score member [score member …] :给指定的key添加多个不重复的元素,score用于元素的排序,示例:
-
Hashes常用命令:
- hset key field value [field value …]:给指定的key设置一个或多个K-V键值对,示例:
hset user name zhangsan age 30 hight 170
- hsetnx key field value:如果指定的field还没存在,则给指定的key设置一个K-V键值对,示例:
hsetnx user weight 110
- hget key field:获取指定key的field字段的值,示例:
hget user name
- hmset key field value [field value …]:等价于hset,给指定的key设置一个或多个K-V键值对,示例:
hmset user name zhangsan age 30 hight 170
- hmget key field [field …]:获取指定key的一个或多个field指定的值,示例:
hmget user name age hight
- hgetall key:返回指定key的所有K-V键值对,示例:
hgetall user
- hdel key field [field …]:删除指定key的一个或者多个K-V键值对,示例:
hdel user name age
- hlen key:返回指定key的K-V键值对的个数,示例:
hlen user
- hexists key field:判断指定key的field是否存在,示例:
hexists user hight
- hkeys key:返回key指定的所有field,示例:
hkeys user
- hvals key:返回key指定的所有field对应的值,示例:
hvals user
- hincrby key field increment:给指定的key的field的值进行自增increment数量,前提是field指定的值是integer类型的,示例:
hincrby user age 5
- hincrbyfloat key field increment:给指定的key的field的值进行自增increment数量,示例:
hincrbyfloat user money 11.11
- hset key field value [field value …]:给指定的key设置一个或多个K-V键值对,示例:
-
其它常用命令:
- select index,切换数据库,index为redis数据库的索引下标,下标从0开始,默认16个库
- keys pattern:查看当前库的所有key,pattern支持正则表达式,示例:
keys *
- exists key [key …]:判断当前库中是否存在指定的key,示例:
exists set1
- move key dbindex:将当前库指定的key移动到dbindex指定下标的数据库,示例:
move user 1
- expire key seconds,给指定的key设置过期时间,单位秒,示例:
expire set1 5
- ttl key:查看指定的key还剩下多少过期时间,单位秒,-1表示永不过期,-2表示已过期,其他值表示剩下过期的时长,示例:
ttl set2
- type key:查看指定key的类型,示例:
type set2
- dbsize:查看当前数据库key的数量
- flushdb:清空当前数据库
- flushall:清空所有数据库
注:转载请注明出处,转载地址:https://blog.csdn.net/guachiqi2340/article/details/109345300