Redis使用详解之数据类型

Redis是一个key-value的nosql数据库,key我们一般认为就是字符串类型,但是value,也就是我们常说的redis数据类型有五种,字符串,

哈西表,列表,集合和有序集合。每一种数据类型的操作都不一样。nosql是not only sql 的意思,和传统关系型数据库还是有区别的,他

的数据直接存放在内存中,所以读写块,适合做缓存,我们没有类sql的语法来操作redis。redis有16个库来保存数据,从0-15,我们不使

用select命令来选择库,那么redis会默认将我们的数据都存放在第0个库中。

redis对所有数据类型的操作,不用事先声明数据类型,都是操作时直接根据操作结果判断数据类型。

下面介绍每种数据类型以及对应的操作:

1)字符串string

字符串类型,是我们是最常用的一种数据类型,操作很直观,get,set,getset,mget,mset

get:命令用于获取指定key的值,如果key不存在,则返回nil,如果返回值不是字符串,则返回错误。

 
  

mget:用于获取多个key的键值。

 
  

getset:设置key的新值,返回旧的值

 
  

strlen:返回key的值的字符串长度

2)哈西表hashes

哈西表存储的数据比字符串要丰富的多,他存储的数据类似一个json对象{name:'feiy',age:30,mobile:'15011186402'},这个json

对象的字段可以随便定义。字段个数和字段类型没有限制。

hset:设置单个属性值,eg : hset stu:1 name feiy
hmset:一次设置多个属性值,eg: hmset stu1:name feiy age 29 mobile 15011186301
hgetall:返回hash表所有属性值,eg: hgetall stu:1
hget:返回hash表一个属性值,eg:hget stu:1 name
 
  

哈西表操作补充:

hsetnx myhash key value :设置一个值,如果不存在则创建,否则设置失败
hmset table key1 value1 key2 value2 :一次设置多个哈希值
hmget table key1 key2 key3 :一次获取多个值
hexists table key1 :判断哈希值是否存在
hlen table :返回哈希所有字段的数量
hdel table key :删除哈希表中的一个字段
hkeys table :返回哈希表中所有字段
hvals table :返回此哈希表中的所有值
3)列表lists

列表是多个元素组成的,redis对列表的操作可以让list成为一个队列,即元素先进先出FIFO,也可以成为一个栈,元素后进先出LIFO。因

为元素有多个,所以存在一个长度的问题,可以通过llen来获取list中元素的长度。list基本操作就是push加入元素,pop取出元素,在redis

中,对于list衍生出lpush,rpush,lpop,rpop等操作,获取list,通过命令lrange然后指定初始位置和结束位置,如果指定结束位置为-1,表示

列表的最后一个元素的位置,可以理解为获取整个列表元素。

 
  

lpush:从列表的头部加入元素,这样,构成的类似栈,先进后出FILO。

 
  

rpush:从列表的尾部加入元素,这样,构成的类似队列,先进先出FIFO。

 
  
4)集合set(也叫无序集合)

集合的特点是集合元素具有唯一性。

sadd:向集合中添加元素

smembers:查看集合中的元素

 
  

集合相关操作补充:

srem:删除集合中的元素
spop:随机返回并删除集合中名为key的元素
sdiff:返回两个集合的差集,eg:sdiff myset myset2 以myset为基准
sinter:求交集
sinterstore:求交集并返回
sunion:求并集

sunionstore:求并集并返回
smove myset myset2 three :将第一个元素里面的元素移动到第二个集合里面
scard myset:返回集合元素个数
sismember myset one:判断一个元素是否为集合的元素
 
  
5)有序集合sorted set

有序集合是在集合基础上,增加一个key保存数据用来排序

zadd:向集合中添加元素

zrange setname 0 -1 [withscores]:返回集合中所有的元素并且带上排序

 
  

有序集合操作补充:

zrem setname key:删除有序集合中的元素
zincrby setname stepby key:改变集合中元素排序
zrank setname key:返回集合中元素的下标,从0开始
zrevrank setname key:返回集合中元素的下标,从最大开始,从大到小
 
  

以上介绍了redis五种数据结构。他们各自有各自的特点,相关操作也不一样。

另外还有一些命令,是对这些数据结构通用的,下面一一做介绍。

keys:这个命令在redis中,应该是最常用的,用来查看redis中有哪些key。以方便我们查找具体的键值,他返回所有满足pattern条件的键,支持模糊匹配。
type:查看类型,可以方便我们在获取某个键值时使用何种命令,避免无的放矢。
exists:确认一个key是否存在。
expire:设置key过期时间,eg: expire age 10 设置age10秒之后过期。
ttl:返回键的过期时间,常常和expire配合使用
del:删除一个key
move:移动key到别的库0-15一共16个数据库
select:0-15选择数据库,默认是0数据库
persist:移除过期时间,eg:ttl age 返回-1,表示过期时间取消了
rename:重命名,eg:rename set2 set200
 
  

最后还有一些操作是和整个redis数据库相关的:

dbsize:统计总共有多少个key
flushdb:删除当前选中的数据库中所有的key,在测试的时候我们经常会这么操作。
flushall:删除所有数据库中的所有key
exit,quit:退出redis命令行
 
 

你可能感兴趣的:(linux)