常用数据结构

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1、String

string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。

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

string类型是Redis最基本的数据类型,一个键最大能存储512MB。

set:设置key的值                                  set aa "aa"//OK    set bb "bb"//OK  set age 1 //OK   

del :删除key                                         del age  //1

get:获取key对应的值                           get aa//"aa"

mget:批量获取多个key的值,如果可以不存在则返回nil                  mget aa bb//1) "aa"  2) "bb"      mget aa cc//1) "aa"  2)  (nil)

incr && incrby:incr对key对应的值进行++操作,并返回新的值;incrby加指定值                incr age //2    incrby age 3  //5

incr操作由于它的原子性,在高并发下的计数、秒杀等场景下使用非常方便。

2、Hash

hash 是一个键值对集合,是一个 string 类型的 key和 value 的映射表,key 还是key,但是value是一个键值对(key-value)。类比于 Java里面的 Map集合,特别适合用于存储对象型的数据。 

hset:hset key field value将哈希表key中的域field的值设置为value,如果key不存在,则创建一个新的hash表。

hset hs k1 value1  //1

hget:hget key field 返回哈希表中给定域field的值

hget hs k1 //value1

hdel:hdel key dield 删除哈希表中给定域的值,不存在的域则忽略

hdel hs k1 //1

hexists:hexists key field 判断哈希表中是否存在field,存在返回1,不存在返回2

hgetall:hgetall key   返回哈希表key中所有的key,value

hincrby:hincrby key field value  将hash表key中的filed值加上value

3、List

List是每个子元素都是String类型的双向链表,可以通过push和pop操作从列表的头部或者尾部添加或者删除元素,这样list即可以作为栈,也可以作为队列。

lpush:lpush list v1 v2 v3...将1个或多个value插入到列表list的表头 lpush list v1 v2 v3 //3

lpushx:lpushx list v4  每次只能插入一个元素到表头,如果list不存在则忽略。lpushx list v4//4

lpop:lpop list 移除并返回列表list的头元素

lrange:lrange list 0 2 //

lrem:lrem list count value   删除list中值为value的元素,count大于0从头搜到尾,count小于0从尾搜到头,count为0时移除所有与value相同的元素

lset:lset list index value  将list中下标为index的元素的值设置为value   

lset mylist 0 aaaaa      //ok   

lset mylist 100 aaaaa    //(error) ERR index out of range

lindex:lindex list index

4、Set

在redis中,我们可以将set类型看做无序的字符集合,可包含最大元素数量为4294967295个,和list不同的是,set中不允许出现重复的元素。

sadd:sadd set value1 value2 ..将一个或者多个元素加入到set中,已存在的元素被忽略

sadd myset v1 v2 v3   //(integer) 3

scard:scard set  返回集合set的元素个数   scard myset //(integer) 3

sdiff:sdiff set 返回集合所有元素,sdiff set1 set2返回set1与set2的差集        sinter为交集

sdiffstore:sdiffstore destionation key ..与sdiff类似,但是会将返回的集合保存到指定的集合destionation 中,如果destionation已存在则覆盖 ,与之对应的有sinterstore

sinmember:sismember set value  判断set集合是否存在value 存在返回1不存在返回0

smembers:smembers set 返回集合set中所有元素

smove:smove sourceset destionationset value 将value从集合sourceset 移到集合destionationset 中,如果sourceset不存在value,则忽略操作,如果destionationset 已存在该元素,则只是将sourceset中的value删除

5、Zset

zset(sorted set 有序集合),和上面的set 数据类型一样,也是 string 类型元素的集合,但是它是有序的。

zadd :zadd zset score value [score value]将一个或多个 值及其权重添加到有序集合zset中,如果zset中已经存在value那么更新value的权重。

zadd zset 1 a 2 b 3 d 4 c         //(integer) 4

zcard:zcard zset返回有序集合zset的元素个数           zcard zset ////(integer) 4

zcount:zcount zset min max 返回有序集合zset中权重大于等于min小于等于max的元素个数

zcount zset 2 3  //(integer) 2

zrange:zrange zset start end [withscores] 返回指定区间内的成员,并且按照权重进行排序,权重相同时按字典序返回,如果结尾带关键字withscores,那么将每个元素的权重也一并返回

zrange zset 0 -1        //1) "a"    2) "b"    3) "d"    4) "c"

zrange zset 0 -1 withscores       //1) "a "   ///2) "1"    //3) "b"    //4) "2"    //5) "d"    //6) "3"    //7) "c"    //8) "4"

zrank:zrank zset value返回value在有序集合zset中的排序,按权重从小到大进行排序,起始值为0

zrank zset c    //(integer) 3

zrem:zrem zset value1 value2 ...移除有序集合zset中值为value1的元素,如果有序集合zset不存在该元素则忽略操作

zrem zset c    //(integer) 1        zrem zset e    //(integer) 0       

zrange zset 0 -1    //1) "a"    2) "b"    3) "d"

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容

  • redis是一个以key-value存储的非关系型数据库。有五种数据类型,string、hashes、list、s...
    林ze宏阅读 990评论 0 0
  • Redis的五种数据结构如下: String:字符串 Hash:字典 List:列表 Set:集合 Sorted ...
    yannhuang阅读 5,129评论 0 2
  • 一大早,我们从若尔盖大草原一路驱车前往黄河九曲第一湾,因为在修路,虽然颠簸的厉害,但没有影响欣赏美景的兴...
    夏日午后的慵懒阅读 278评论 1 1
  • 《竹轩幽居》 文 / 文君 等我老了 就住到乡下去 远离城市的喧嚣 避开灯红酒绿的吵闹 独享一份自在逍遥 只奢求有...
    君無情545阅读 240评论 4 9
  • 微薇亮阅读 125评论 0 0