ITPub博客

首页 > 数据库 > NoSQL > 小丸子学Redis系列之——Data types(一)

小丸子学Redis系列之——Data types(一)

原创 NoSQL 作者:wxjzqym 时间:2015-12-15 17:22:19 0 删除 编辑

Redis相比其他key-value类型的数据库来说有其特有的优势,其中两点比较突出的就是支持数据持久化和支持各种复杂的数据结构。
本文就来简单介绍下Redis 3.0支持的数据类型,以及各个数据类型支持的一些常见操作,所以演示都以redis-cli工具来演示。
目前Redis 3.0支持的数据类型有:
1.strings——Binary-safe strings
2.Lists——集合中的字符串元素顺序是由元素插入的顺序决定的,这种类型我们通常称之为链表
3.Sets——集合中的字符串元素是唯一的且无序的
4.Sorted sets——类似于Sets类型但是集合中每个元素都会关联一个浮点数(称之为score),并且按照元素对应的score进行排序
5.Hashes——该类型被映射成一组字段和字段值组成,非常适合存储对象
6.Bit arrays (or simply bitmaps)——该类型主要针对bit数组的操作
7.HyperLogLogs——一种概率类型的数据结构,主要用于评估集合的基数


Reis Strings

1.set和get命令——设置和获取一个string value
1.1 基本用法
[rdsusr01@vm1 ~]$ redis-cli -h 192.168.157.128 -p 16379
192.168.157.128:16379> set name sohoboy
OK
192.168.157.128:16379> get name
"sohoboy"
192.168.157.128:16379> set name kickboy
OK
192.168.157.128:16379> get name
"kickboy"
注:set命令会覆盖已存在的key中的value,即使这个key用一个non-string value关联。

1.2 set命令的参数
set key nx:key如果已存在,那么设置key的动作将失败
set key xx:key如果已存在,那么设置key的动作将成功
192.168.157.128:16379> get name
"kickboy"
192.168.157.128:16379> set name oldboy nx
(nil)
192.168.157.128:16379> get name
"kickboy"
192.168.157.128:16379> set name oldboy xx
OK
192.168.157.128:16379> get name
"oldboy"

2.incr命令——将string value解析成一个整数,然后在此基础上加1
类似的命令还有decr,increby,decrby,incr和decr功能相反,*by的增加/减少的数量可以指定
192.168.157.128:16379> set count 3
OK
192.168.157.128:16379> incr count
(integer) 4
192.168.157.128:16379> incr count
(integer) 5
192.168.157.128:16379> get count
"5"
192.168.157.128:16379> incrby count 25
(integer) 30
192.168.157.128:16379> get count
"30"
192.168.157.128:16379> decr count
(integer) 29
192.168.157.128:16379> get count
"29"
192.168.157.128:16379> decrby count 9
(integer) 20
192.168.157.128:16379> get count
"20"

3.mset和mget命令——一次性设置和获取多个key的value
192.168.157.128:16379> mset db1 oracle db2 mysql db3 mongodb db4 redis
OK
192.168.157.128:16379> mget db1 db2 db3 db4
1) "oracle"
2) "mysql"
3) "mongodb"
4) "redis"

4.通用命令——exists,del,type,这些命令不局限于Redis String类型的key
exists:指定的key如果存在则返回1,不存在返回0
del:删除一个key以及key关联的value
type:返回key中存储的value的类型
192.168.157.128:16379> exists name
(integer) 1
192.168.157.128:16379> type name
string
192.168.157.128:16379> del name
(integer) 1
192.168.157.128:16379> exists name
(integer) 0

5.expire和ttl命令——设置key的过期时间以及检查key的存活时间,单位是秒
192.168.157.128:16379> set name sohoboy
OK
192.168.157.128:16379> expire name 10
(integer) 1
192.168.157.128:16379> ttl name
(integer) 7
192.168.157.128:16379> ttl name
(integer) 3
192.168.157.128:16379> ttl name
(integer) -2
192.168.157.128:16379> get name
(nil)

6.pexpire和pttl命令——设置key的过期时间以及检查key的存活时间,单位是毫秒
192.168.157.128:16379> set name oldboy
OK
192.168.157.128:16379> pexpire name 9855
(integer) 1
192.168.157.128:16379> pttl name
(integer) 7113
192.168.157.128:16379> pttl name
(integer) 5096
192.168.157.128:16379> pttl name
(integer) 3551
注:这里在补充几个相关的命令和参数
persist:去掉设置了过期时间的key,使其持久化
set key ex:设置key的超时时间,单位是秒
set key px:设置key的超时时间,单位是毫秒
192.168.157.128:16379> set name oldboy ex 11
OK
192.168.157.128:16379> ttl name
(integer) 8
192.168.157.128:16379> ttl name
(integer) 5
192.168.157.128:16379> set name oldboy px 8933
OK
192.168.157.128:16379> pttl name
(integer) 5175
192.168.157.128:16379> pttl name
(integer) 4018
192.168.157.128:16379> persist name
(integer) 1

7.getrange和setrange命令——返回key的子串和重写key的子串
192.168.157.128:16379> set slogan "I am a handsome man"
OK
192.168.157.128:16379> get slogan
"I am a handsome man"
192.168.157.128:16379> getrange slogan 7 -5
"handsome"
192.168.157.128:16379> getrange slogan 30 -2
""
192.168.157.128:16379> getrange slogan 0 100
"I am a handsome man"
192.168.157.128:16379> setrange slogan -3 woman
(error) ERR offset is out of range
192.168.157.128:16379> get slogan
"I am a handsome man"
192.168.157.128:16379> setrange slogan 7 glamour
(integer) 19
192.168.157.128:16379> get slogan
"I am a glamoure man"
192.168.157.128:16379> setrange slogan 30  yes
(integer) 33
192.168.157.128:16379> get slogan
"I am a glamoure man\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00yes"

8.getbit和setbit命令——获取和设置key中存储的string value对应的offset的bit
192.168.157.128:16379> set word a
OK
192.168.157.128:16379> getbit word 1
(integer) 1
192.168.157.128:16379> getbit word 0
(integer) 0
192.168.157.128:16379> getbit word 3
(integer) 0
192.168.157.128:16379> getbit word 7
(integer) 1
192.168.157.128:16379> getbit word 8
(integer) 0
192.168.157.128:16379> bitcount word
(integer) 3
192.168.157.128:16379> setbit word 3 1
(integer) 0
192.168.157.128:16379> getbit word 3
(integer) 1
192.168.157.128:16379> setbit word 3 0
(integer) 1
注:字符"a"对应的二进制位是"1100001"
至此关于Redis Strings类型的key的一些常用操作介绍到这,下面的文章会陆续介绍其他数据类型。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/20801486/viewspace-1872810/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-05-15

  • 博文量
    100
  • 访问量
    469465