您的位置:首页 > 数据库 > Redis

Redis的数据类型及其操作

2016-01-02 00:00 579 查看
摘要: Redis的数据类型及其操作,为了大家更方便的了解Redis,文档因为有些是截图的,但是效果肯定都是实践过的
        1  启动redis服务    redis客户端服务
    redis-server再开一个terminalredis-cli关闭服务redis-cli shutdown
2 redis支持的数据类型
作为Key-value型数据库,Redis也提供了键(Key)和键值(Value)的映射关系。但是,除了常规的数值或字符串,Redis的键值还可以是以下形式之一:  ●Lists (列表)   ●Sets (集合)  ●Sorted sets (有序集合)  ●Hashes (哈希表)  键值的数据类型决定了该键值支持的操作。Redis支持诸如列表、集合或有序集合的交集、并集、查集等高级原子操作;  同时,如果键值的类型是普通数字,Redis则提供自增等原子操作。  
a 字符串类型的增删改查
字符串中set的用法
1, set设置key对应的值为string类型的value。例如我们添加一个username = heinrich的键值对,可以这样做:set username heinrich2, setnx  设置key对应的值为string类型的value。如果key已经存在,返回0,nx是not exist的意思。  例如我们添加一个username= heinrich01的键值对,可以这样做:  setnx username heinrich01  如果username存在返回0 如果不存在创建,和value值无关    3, setex    设置key对应的值为string类型的value,并指定此键值对应的有效期。  例如我们添加一个haircolor = red 的键值对,并指定它的有效期是100秒,可以这样做:使用场景比如说是在秒杀倒计时setex haircolor 100  red100秒后自动失效
    4, setrange  修改指定key的value值的子字符串部分值。  例如我们希望将heinrich@qq.com邮箱替换为gmail邮箱,毕竟qq邮箱屌丝多,那么我们可以这样做:     127.0.0.1:6379> get mail"heinrich@qq.com"127.0.0.1:6379> setrange mail 8 @gmail.com(integer) 18127.0.0.1:6379> get mail"heinrich@gmail.com"其中的8是指从下标为8(包含8)的字符开始替换,也就是第九位5, mset  一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。127.0.0.1:6379> mset user1 "gee" user2 "gale"OK127.0.0.1:6379> get user1"gee"127.0.0.1:6379> get user2"gale"127.0.0.1:6379>6, msetnx  一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key。   基于上面mset的例子    127.0.0.1:6379> msetnx user1 "gate" user2 "jay" user3 "hallen"(integer) 0127.0.0.1:6379> get user3(nil)127.0.0.1:6379> get user1"gee"127.0.0.1:6379> get user2"gale"127.0.0.1:6379>也就是说只要没有成功,只要返回0 那么所有操作都失败
字符串中get的用法
   1,  get  获取key对应的string值,如果key不存在返回nil。  例如我们获取一个库中存在的键name,可以很快得到它对应的value   127.0.0.1:6379> set phone appleOK127.0.0.1:6379> get phone"apple"当我想要获取moblie这个字段的时候,没有所以返回nil127.0.0.1:6379> get moblie(nil)127.0.0.1:6379>2, getset  设置key的值,并返回key的旧值。127.0.0.1:6379> set phone appleOK127.0.0.1:6379> getset phone huawei"apple"127.0.0.1:6379>给phone设置一个新的值,并返回原来的那个值如果phone不存在,我们看看会出现什么情况127.0.0.1:6379> set phone appleOK127.0.0.1:6379> get phone"apple"127.0.0.1:6379> del phone(integer) 1127.0.0.1:6379> getset phone huawei(nil)127.0.0.1:6379> get phone"huawei"127.0.0.1:6379>发现了不存在直接返回nil但是依然赋值给phone3, getrange  获取指定key的value值的子字符串。  具体样例如下:127.0.0.1:6379> get mail"heinrich@gmail.com"127.0.0.1:6379> getrange mail 0 6"heinric"127.0.0.1:6379>和setrange一样,他们都是成双成对的出现的,老外和我们一样,都喜欢好事成双如果要获取后面的怎么办.当然是有办法的127.0.0.1:6379> getrange mail -10 -1"@gmail.com"127.0.0.1:6379>-10 代表的是从倒数第十位开始,  -1 代表的是最后一位包含在内当下标超出字符串长度时,将默认为是同方向的最大下标127.0.0.1:6379> getrange mail -100 -1"heinrich@gmail.com"127.0.0.1:6379>4,  mget一次获取多个key的值,如果对应key不存在,则对应返回nil。127.0.0.1:6379> mset book1 android book2 java book3 redisOK127.0.0.1:6379> mget book1 book2 book3 book41) "android"2) "java"3) "redis"4) (nil)127.0.0.1:6379>如果不存在返回nil5, incr  对key的值做加加操作,并返回新的值。注意incr一个不是int的value会返回错误,incr一个不存在的key,则设置key为1127.0.0.1:6379> set num 20OK127.0.0.1:6379> get num"20"127.0.0.1:6379> incr age(integer) 1127.0.0.1:6379> get age"1"127.0.0.1:6379>  incr num(integer) 21127.0.0.1:6379>如果之不存在默认是06,  incrby同incr类似,加指定值 ,key不存在时候会设置key,并认为原来的value是 0127.0.0.1:6379> incrby num 10(integer) 31127.0.0.1:6379> incrby money 10(integer) 10127.0.0.1:6379>有加法肯定有减法7,  decr对key的值做的是减减操作,decr一个不存在key,则设置key为-1127.0.0.1:6379> get age"1"127.0.0.1:6379> decr age(integer) 0127.0.0.1:6379> get num"31"127.0.0.1:6379> decr num(integer) 30127.0.0.1:6379>8,decrby都说了成双出现当然有decrby了同incr类似,减指定值 ,key不存在时候会设置key,并认为原来的value是 0127.0.0.1:6379> get num"30"127.0.0.1:6379> decrby num 9(integer) 21127.0.0.1:6379> decrby pack 20(integer) -20127.0.0.1:6379>decrby完全是为了可读性,我们完全可以通过incrby一个负值来实现同样效果,反之一样。 127.0.0.1:6379> decrby pack 20(integer) -20127.0.0.1:6379> decrby pack -25(integer) 5127.0.0.1:6379>9, append  给指定key的字符串值追加value,返回新字符串值的长度。例如我们向name的值追加一个@gmail.com字符串,那么可以这样做: 127.0.0.1:6379> set name heinrichOK127.0.0.1:6379> get name"heinrich"127.0.0.1:6379> append name "@gmail.com"(integer) 18127.0.0.1:6379> get name"heinrich@gmail.com"127.0.0.1:6379>10, strlen取指定key的value值的长度127.0.0.1:6379> get name"heinrich@gmail.com"127.0.0.1:6379> strlen name(integer) 18127.0.0.1:6379>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: