redis--数据类型

redis支持五种数据类型:

  1. string(字符串)
  2. hash(哈希)
  3. list(列表)
  4. set(集合)
  5. zset(sorted set:有序集合)

string(字符串)

  string时redis最基本的类型,一个key对应一个value

  string类型是二进制安全的,也就是redis可以包含任何数据。比如jpg图片或者序列化的对象

  string是redis最基本的数据类型,string类型的值最大能存储512MB

127.0.0.1:6379> set runood 'william林涛'
OK
127.0.0.1:6379> get runood
william林涛
127.0.0.1:6379> 

  调用了redis的set和get命令。这里面的键是runood,对应的值就是‘runood’ 

  redis字符串命令:

 1

 set key value

  设置指定key的值

 2

 get key

  获取指定key值

 3

 getrange key start end

  返回key中字符串值的字节符

 4

 getset key value

  将给定key的值设为value,并返回key的旧值(old value)

 5

 getbit key offset

  对key所存储的字符串值,获取指定偏移量上的位(bit)

 6

 mget key1[key2...]

  获取所有(一个或者多个)给定key的值

 7

 setbit key offset value

  对key所存储的字符串值,设置或清除指定偏移量上的位(bit)

 8

setex key seconds value

  将值value关联到key,并将key的过期时间设为seconds(以秒位单位) 

 9

setnx key value

  只有key不存在时设置key的值 

 10

 setrange key offset value

  用value 参数赋写给定key所存储的字符串值,从偏移量offset开始

 11

 strlen key

  返回key所存储的字符串值的长度

 12

 mset key value [key value...]

  同时设置一个或多个key-value对

 13

 msetnx key value [key value...]

  同时设置一个或者多个key-value对,当且仅当所有给定key都不存在

 14

 psetex key milliseconds value

  以毫秒位单位设置key的生存时间,而不是像setex命令那样,以秒为单位

 15

incr key

  将key中储存的数字增量加一 

 16

 incrby key increment

  将key所存储的值加上给定的增量值(increment)

 17

 incrbyfloat key increment

  将key所储存的值加上给定的浮点增量值

 18

desc key

  将key中储存的数字值减一

 19

 desrby key descrement

  key所储存的值减去给定的减量值(descrement)

 20

 append key value

  如果key已经存在并且是一个字符串,append命令将指定的value追加到该key原来值(value)的末尾

   


hash(哈希)

  redis hash是一个键值对集合

  redis hash是一个string类型的field和value的映射表,hash适合用于存储对象

  当你再次使用之前使用过的runood的时候因为你已经使用过了,所以需要先将之前的key删掉

127.0.0.1:6379> del runood
1

  

127.0.0.1:6379> hmset runood field1 'hello' field2 'world'
OK
127.0.0.1:6379> hget runood field1
hello
127.0.0.1:6379> hget runood field2
world
127.0.0.1:6379> 

  这里面用到了redis的hmset和hget命令,hmset设置了两个field=>value对,hget获取相应的field对应的value

  每个hash可以存储 232 -1 键值对(40多亿)。

  redis hash命令

   更多命令:https://redis.io/commands

list(列表)

  redis列表是简单的字符串列表,按照插入的顺序排序。你可以选择添加一个元素到列表的头部(左边)或者尾部(右边)。

127.0.0.1:6379> del runood
1
127.0.0.1:6379> lpush runood redis
1
127.0.0.1:6379> lpush runood mongodb
2
127.0.0.1:6379> lpush runood mysql
3
127.0.0.1:6379> lrange runood 0 10
mysql
mongodb
redis
127.0.0.1:6379> 

  列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

  

  redis列表命令:

  

 

Set(集合)

  redis的set是string类型的无序集合

  集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

  sadd命令

  添加一个string元素到key对应的set集合中,成功就返回1,如果元素已经在集合中就返回0

sadd key member
127.0.0.1:6379> del runood
1
127.0.0.1:6379> sadd runood redis
1
127.0.0.1:6379> sadd runood mongodb
1
127.0.0.1:6379> sadd runood mysql
1
127.0.0.1:6379> sadd runood redis
0
127.0.0.1:6379> smembers runood
mysql
mongodb
redis
127.0.0.1:6379> 

  在上面的例子中redis添加了两次,但根据集合内元素的唯一性,第二次插入的元素将被忽略

  集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

  

  redis集合(Set)

  

zset(sorted set:有序集合)

  redis zset和set一样也是string类型元素的集合,且不允许重复的成员

  不同的是每个元素都会关联一个double类型的分数,redis正式通过分数来为集合中的成员进行从小到大的排序

  zset的成员是唯一的,但分数(score)却可以重复

  

  zadd命令:添加元素到集合,元素在集合中存在的话就更新对应的分数(score)

zadd key score member
127.0.0.1:6379> del runood
1
127.0.0.1:6379> zadd runood 0 redis
1
127.0.0.1:6379> zadd runood 0 mongodb
1
127.0.0.1:6379> zadd runood 0 mysql
1
127.0.0.1:6379> zadd runood 0 redis
0
127.0.0.1:6379> zrangebyscore runood 0 10
mongodb
mysql
redis
127.0.0.1:6379> 

  redis有序集合命令

  

 

原文地址:https://www.cnblogs.com/tulintao/p/11526397.html