Redis数据库的数据类型(String)
2017-07-26 00:00
239 查看
Redis的数据类型 1、String类型及操作 String是最简单的类型,一个Key对应一个Value,string类型是二进制安全的,Redis的String可以包含任何数据,比如jpg图片或者序列化的对象。 设置key对应的值为string类型的value
set
Setnx 设置key对应的值为string类型的value,如果key已经存在,返回0,nx表示not exist的意思 //mykey是刚才在set中设置过的 //setnx设置对应的值为string类型的value,如果key已经存在,返回0,设置不成功
Setex 设置key对应的值为string类型的value,并指定此键值对应的有效期 例如:添加一个haircolor=red的键值对,并指定有效期为10秒
Setrange 设置指定key的value值的子字符串 例如:我们希望将baiping的126邮箱替换为gmail邮箱 setrange name 6 gmail.com //设置键为name的字符串从第6个字符串开始替换为gmail.com,如果替换的字符串没有被替换的字符串长,是不会替换完
mset 一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置 例如:
getrange 获取key的value值的子字符串 如:getrange name 0 5 获取键名为name的值从第0个字符到第5个字符返回
mget 一次获取多个key的值,如果对应的key不存在则对应返回nil
incr 对key的值做加加操作,每次操作只加1,并返回新的值,(适合做访问统计)
incrby 同incr类似,加指定值,key不存在时会设置key,并认为原来的value是0 如:incrby key 5 //自增加5 incrby key -5 //减去5,设置为负值就可以
decr 对key的值做减减操作 //decr命令让值成为了个整数,运行一次incr便11
decrby 同decr类似,减指定值 //decrby是将值+指定的数
append 给指定key的字符串追加value,返回新字符串值的长度 如:append name @163.com //相当于给name原有的值后追加了@163.com
strlen 取指定key的value值的长度
2、hashes类型的操作 hash是一个string类型的field和value的映射表,它的添加、删除操作都是0(1)。hash特别适合用于存储对象,相较于将对象的每个字段存成单个string类型,将一个对象存储在 hash类型中会占用更少的内存,并且可以更方便的存取整个对象
hset 设置hash field为指定值,如果key不存在,则先创建 如:hset myhash field1 hello //设置myhash表里的field1的字段的值为hello hset user:001 username baiping //设置user:001表的用户名为baiping
hsetnx 设置hash field为指定值,如果key不存在,则先创建,如果存在返回0 如:hsetnx myhash field "hello"
hmset 同时设置hash的多个field
hget 获取表中的指定字段的值
hmget 获取全部指定的hash field
hincrby 指定的hash field加上给定值 如:hincrby myhash age 8 //设置myhash表中的age的字段在原基础上加了8
hexists 判断hash表是的字段是否存在,存在返回1否则返回0
hlen 返回指定hash的field数量
hdel 删除指定hash的field
hkeys 返回hash的所有field
hvals 返回hash的所有value
hgetall 获取某个hash中全部的field及value
set
如果直接用set设置值,如果没有此下标的值,会添加。如果存在直接覆盖。redis-cli 127.0.0.1:6379> set mykey somevalue OK 127.0.0.1:6379> get mykey "somvalue"
Setnx 设置key对应的值为string类型的value,如果key已经存在,返回0,nx表示not exist的意思 //mykey是刚才在set中设置过的 //setnx设置对应的值为string类型的value,如果key已经存在,返回0,设置不成功
127.0.0.1:6379>setnx mykey newvalue (integer) 0
Setex 设置key对应的值为string类型的value,并指定此键值对应的有效期 例如:添加一个haircolor=red的键值对,并指定有效期为10秒
127.0.0.1:6379>setex mykey 10 red //表示设置mykey的值为red,有效期为10秒 OK 127.0.0.1:6379>get mykey red //10秒后 127.0.0.1:6379>get mykey (nil)
Setrange 设置指定key的value值的子字符串 例如:我们希望将baiping的126邮箱替换为gmail邮箱 setrange name 6 gmail.com //设置键为name的字符串从第6个字符串开始替换为gmail.com,如果替换的字符串没有被替换的字符串长,是不会替换完
//相当于把mystr从第7位开始替换为@126.com,从0记起127.0.0.1:6379> set mystr baiping@163.com OK
127.0.0.1:6379> setrange mystr 7 @126.com (integer) 15 127.0.0.1:6379> get mystr "baiping@126.com" //从第7位开始替换,如果从第7位到尾部值的长度大于要替换的值的长度,后面的不修改 127.0.0.1:6379> setrange mystr 7 @qq.com (integer) 15 127.0.0.1:6379> get mystr "baiping@qq.comm"
mset 一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置 例如:
msetnx 一次设置多个key的值,成功返回ok表示所有的值设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key,如果有一个键没有设置成功,所有的健不会设置成功 get 获取key对应的string值,如果key不存在返回nil getset 设置key的值,并返回key的旧值(设置新值,返回旧值)//mget命令完成一次性完成多个key-value的对应关系 127.0.0.1:6379>mset key1 value1 key2 value2 key3 value3 OK
//设置字符串的值,并返回key的旧值(设置新值,返回旧值) 127.0.0.1:6379> set mystr baidu.com 127.0.0.1:6379> get mystr "baidu.com" 127.0.0.1:6379> getset mystr sina.com "baidu.com" 127.0.0.1:6379> get mystr "sina.com"
getrange 获取key的value值的子字符串 如:getrange name 0 5 获取键名为name的值从第0个字符到第5个字符返回
127.0.0.1:6379> set mystr sina.com 127.0.0.1:6379> get mystr "sina.com" 127.0.0.1:6379> getrange mystr 1 5 "ina.c"
mget 一次获取多个key的值,如果对应的key不存在则对应返回nil
127.0.0.1:6379> mset key1 value1 key2 value2 key3 value3 OK 127.0.0.1:6379> mget key1 key2 key3 1) "value1" 2) "value2" 3) "value3" //如果获取的key值没有值返回nil 127.0.0.1:6379> mget key1 key2 key3 key4 1) "value1" 2) "value2" 3) "value3" 4) (nil)
incr 对key的值做加加操作,每次操作只加1,并返回新的值,(适合做访问统计)
//incr命令让值成为了个整数,运行一次incr便+1 127.0.0.1:6379>set counts 100 OK 127.0.0.1:6379>incr counts (integer) 101
incrby 同incr类似,加指定值,key不存在时会设置key,并认为原来的value是0 如:incrby key 5 //自增加5 incrby key -5 //减去5,设置为负值就可以
//incrby是将值+指定的数 127.0.0.1:6379>set numbers 100 OK 127.0.0.1:6379>get numbers (integer) 100 127.0.0.1:6379>incrby numbers 50 (integer) 150 127.0.0.1:6379>incrby number -5 (integer) 145
decr 对key的值做减减操作 //decr命令让值成为了个整数,运行一次incr便11
127.0.0.1:6379>set counts 100 OK 127.0.0.1:6379>decr counts (integer) 99
decrby 同decr类似,减指定值 //decrby是将值+指定的数
127.0.0.1:6379>set numbers 100 OK 127.0.0.1:6379>get numbers (integer) 100 127.0.0.1:6379>decrby numbers 50 (integer) 50 127.0.0.1:6379>incrby number -5 //这里本身就是减法运算,-5实质运行为--5为正 (integer) 55
append 给指定key的字符串追加value,返回新字符串值的长度 如:append name @163.com //相当于给name原有的值后追加了@163.com
127.0.0.1:6379> set mystr baiping OK 127.0.0.1:6379> get mystr "baiping" 127.0.0.1:6379> append mystr @163.com (integer) 15 127.0.0.1:6379> get mystr "baiping@163.com"
strlen 取指定key的value值的长度
127.0.0.1:6379> set mystr baiping@163.com (integer) 15 127.0.0.1:6379> strlen mystr (integer) 15
2、hashes类型的操作 hash是一个string类型的field和value的映射表,它的添加、删除操作都是0(1)。hash特别适合用于存储对象,相较于将对象的每个字段存成单个string类型,将一个对象存储在 hash类型中会占用更少的内存,并且可以更方便的存取整个对象
hset 设置hash field为指定值,如果key不存在,则先创建 如:hset myhash field1 hello //设置myhash表里的field1的字段的值为hello hset user:001 username baiping //设置user:001表的用户名为baiping
127.0.0.1:6379> hset myhash myname baiping (integer) 1 127.0.0.1:6379> hget myhash myname "baipig"
hsetnx 设置hash field为指定值,如果key不存在,则先创建,如果存在返回0 如:hsetnx myhash field "hello"
127.0.0.1:6379> hset myhash myname baiping (integer) 1 127.0.0.1:6379> hget myhash myname "baiping" 127.0.0.1:6379> hsetnx myhash myname baiping01 (integer) 0 127.0.0.1:6379> hget myhash myname "baiping" 127.0.0.1:6379> hsetnx myhash age 30 (integet) 1 127.0.0.1:6379> hget myhash age "30"
hmset 同时设置hash的多个field
127.0.0.1:6379> hmset member username baping age 30 OK
hget 获取表中的指定字段的值
127.0.0.1:6379> hmset member username baping age 30 OK
127.0.0.1:6379> hget member username
"baping"
hmget 获取全部指定的hash field
127.0.0.1:6379> hmget myhash myname age 1) "baiping" 2) "30"
hincrby 指定的hash field加上给定值 如:hincrby myhash age 8 //设置myhash表中的age的字段在原基础上加了8
127.0.0.1:6379> hmset myhash myname baiping age 30 OK 127.0.0.1:6379> hmget myhash myname age 1) "baiping" 2) "30" 127.0.0.1:6379> hincrby myhash age 8 (integer) 38 127.0.0.1:6379> hmget myhash myname age 1) "baiping" 2) "38"
hexists 判断hash表是的字段是否存在,存在返回1否则返回0
127.0.0.1:6379> hmset member username baiping age 30 Ok 127.0.0.1:6379> hexists member username (integer) 1 127.0.0.1:6379> hexists member password // password 没有此字段 (integer) 0
hlen 返回指定hash的field数量
127.0.0.1:6379> hmset member username baiping age 30 OK 127.0.0.1:6379> hlen member (integer) 2 //两个字段
hdel 删除指定hash的field
127.0.0.1:6379> hset member sex nan OK 127.0.0.1:6379> hlen member (integer) 3 127.0.0.1:6379> hdel member sex (integer) 1 127.0.0.1:6379> hlen member (integer) 2
hkeys 返回hash的所有field
127.0.0.1:6379> hkeys member 1) "username" 2) "age"
hvals 返回hash的所有value
127.0.0.1:6379> hvals member 1) "baiping" 2) "35"
hgetall 获取某个hash中全部的field及value
127.0.0.1:6379> hgetall member 1) "username" 2) "baiping" 3) "age" 4) "35"
相关文章推荐
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- Redis的String数据类型
- 02_NoSQL数据库之Redis数据库:string类型和hash类型
- redis学习(二)——String数据类型
- redis 数据类型(一)string的使用
- 【Redis学习】:string数据类型详解
- Redis的数据类型之String
- Redis基本数据类型以及String(一)
- 「redis存储篇」string数据类型的操作
- Redis-Service.Stack.Redis对Redis基本数据类型String,List,Hash,Set,ZSet的操作
- redis数据类型(String)
- redis基础之数据类型string
- Redis学习手册(String数据类型)
- redis的五种数据类型---string类型
- Redis学习手册(String数据类型)
- [置顶] REDIS数据类型详解LIST-HASH-SET-STRING
- Redis学习手册(String数据类型)
- Redis String类型数据常用的16条命令总结
- 系统学习redis之三——redis数据类型之string类型及操作
- Redis教程(二):String数据类型