`
iluoxuan
  • 浏览: 582183 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

3:redis的数据类型及操作

阅读更多

1: redis的是key-value 数据库,value的数据类型有:

Lists (列表)

Sets (集合)

Sorted sets (有序集合)

Hashes (哈希表)

键值的数据类型决定了该键值支持的操作。Redis 支持诸如列表、集合或有序集合的交集、

并集、查集等高级原子操作;同时,如果键值的类型是普通数字,Redis 则提供自增等原子

操作。


2: strings 类型及操作

 exists ljq  //判断建是否存在 0 不存在 1

redis 127.0.0.1:6378> set ljq ljq
OK
redis 127.0.0.1:6378> get ljq
"ljq"
redis 127.0.0.1:6378> del ljq
(integer) 1
redis 127.0.0.1:6378> exists ljq
 

 

 

setnx ljq jljl // key存在, 不修改value,返回0

setex hello 10 red //set的value存在10s

redis 127.0.0.1:6378> get ljq
"ljq123"
redis 127.0.0.1:6378> setnx ljq jljl
(integer) 0
redis 127.0.0.1:6378> get ljq
"ljq123"
redis 127.0.0.1:6378> setex hello 10 red
OK
redis 127.0.0.1:6378> get hello
"red"
redis 127.0.0.1:6378> get hello
"red"
redis 127.0.0.1:6378> get hello
(nil)

 

 

   

setrange name 4 gmail,com // 范围修改 从1开始

mset h1 ljq1 h2 ljq2 // set多个

mset h1 ljqh1 h2 ljq222 // 修改多个

mget h1 h2 //获取多个key的值

getrange name 0 2 // 范围获取

redis 127.0.0.1:6378> get name
"ljq@qq.com"
redis 127.0.0.1:6378> setrange name 4 gmail,com
(integer) 13
redis 127.0.0.1:6378> get name
"ljq@gmail,com"
redis 127.0.0.1:6378> mset h1 ljq1 h2 ljq2
OK
redis 127.0.0.1:6378> get h1
"ljq1"
redis 127.0.0.1:6378> get h2
"ljq2"
redis 127.0.0.1:6378> mset h1 ljqh1 h2 ljq222
OK
redis 127.0.0.1:6378> get h1
"ljqh1"
redis 127.0.0.1:6378> get h2
"ljq222"
redis 127.0.0.1:6378> getset name
(error) ERR wrong number of arguments for 'getset' command
redis 127.0.0.1:6378> getset name
(error) ERR wrong number of arguments for 'getset' command
redis 127.0.0.1:6378> get name
"ljq@gmail,com"
redis 127.0.0.1:6378> getset name ljss
"ljq@gmail,com"
redis 127.0.0.1:6378> get name
"ljss"
 
原子操作
incr age //原子操作  加1
incrby age 6 //原子操作  加6
redis 127.0.0.1:6378> set age 12
OK
redis 127.0.0.1:6378> incr age
(integer) 13
redis 127.0.0.1:6378> incr age
(integer) 14
redis 127.0.0.1:6378> incr age
(integer) 15
redis 127.0.0.1:6378> incr age
(integer) 16
redis 127.0.0.1:6378> get age
"16"
redis 127.0.0.1:6378> incrby age 6
(integer) 22
redis 127.0.0.1:6378> get  age
"22"
redis 127.0.0.1:6378> decr age
(integer) 21
redis 127.0.0.1:6378> decr age
(integer) 20
redis 127.0.0.1:6378> decrby 6
(error) ERR wrong number of arguments for 'decrby' command
redis 127.0.0.1:6378> decrby age 6
(integer) 14
 
redis 127.0.0.1:6378> get name
"ljss"
redis 127.0.0.1:6378> append name @qq.com
(integer) 11
redis 127.0.0.1:6378> get name
"ljss@qq.com"
redis 127.0.0.1:6378> strlen name
(integer) 11
redis 127.0.0.1:6378> get age
"14"
redis 127.0.0.1:6378> strlen age
(integer) 2
 
 2: hashes类型及操作
redis的hashes是key-value键值对, 特别适合用于存储对象。相较于将对象的每个字段存成单个 string 类型。
将一个对象存储在 hash 类型中会占用更少的内存,并且可以更方便的存取整个对象。省内存的原因是新
建一个 hash 对象时开始是用 zipmap(又称为 small hash)来存储的。这个 zipmap 其实并不
是 hash table,但是 zipmap 相比正常的 hash 实现可以节省不少 hash 本身需要的一些元数据
存储开销。尽管 zipmap 的添加,删除,查找都是 O(n),但是由于一般对象的 field 数量都不太多。所以使用 zipmap 也是很快的,也就是说添加删除平均还是 O(1)。如果 field 或者 value的大小超出一定限制后,
Redis 会在内部自动将 zipmap 替换成正常的 hash 实现. 这个限制可以在配置文件中指定
hash-max-zipmap-entries 64 #配置字段最多 64 个,
hash-max-zipmap-value 512 #配置 value 最大为 512 字节
 1: hset, hget  
redis 127.0.0.1:6378> hset testhash key1 value1
(integer) 1
redis 127.0.0.1:6378> hget testhash key1
"value1"
redis 127.0.0.1:6378> 
 2:hsetnx
redis 127.0.0.1:6378> hsetnx testhash key1 ljq
(integer) 0
redis 127.0.0.1:6378> hget testhash key1
"value1"
redis 127.0.0.1:6378> 
 3:hmset, hmget   set多个取多个
redis 127.0.0.1:6378> hmset myhash key1 vlaue1 key2 value2
OK
redis 127.0.0.1:6378> hmget myhash key1 key2
1) "vlaue1"
2) "value2"
 4:hincrby 原子加
redis 127.0.0.1:6378> hset inhash key1 20
(integer) 1
redis 127.0.0.1:6378> hincr inhash key1
(error) ERR unknown command 'hincr'
redis 127.0.0.1:6378> hincrby inhash key1 5
(integer) 25
 5:hexists, hlen 计算里面field的数量
   
redis 127.0.0.1:6378> hexists myhash key1
(integer) 1
redis 127.0.0.1:6378> hget myhash key1
"vlaue1"
redis 127.0.0.1:6378> hlen myhahs key1
(error) ERR wrong number of arguments for 'hlen' command
redis 127.0.0.1:6378> hlen myhah key1
(error) ERR wrong number of arguments for 'hlen' command
redis 127.0.0.1:6378> hlen myhash
(integer) 2
 6: hdel删除一个key
redis 127.0.0.1:6378> hlen myhash
(integer) 3
redis 127.0.0.1:6378> hlen myhash key2
(error) ERR wrong number of arguments for 'hlen' command
redis 127.0.0.1:6378> hdel myhash key2
(integer) 1
redis 127.0.0.1:6378> hlen myhash
(integer) 2
 7:获得所有的key 和value
redis 127.0.0.1:6378> hkeys myhash
1) "key1"
2) "key3"
redis 127.0.0.1:6378> hvals myhash
1) "vlaue1"
2) "value3"
redis 127.0.0.1:6378> hgetall myhash
1) "key1"
2) "vlaue1"
3) "key3"
4) "value3"
 
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics