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

redis 对支持的数据类型的基本操作

2014-11-25 10:39 686 查看
注意:

redis的key不要太长也不要太短,最大长度为512 MB, 官方文档给出的建议key schema为:object-type:id,如user:1000,
或者使用“.”与"-",如"comment:1234:reply.to",comment:1234:reply-to

redis_cli下 使用 redis缓存方法:

开启redis_cli,redis默认端口6379,若修改了默认端口,则开启redis_cli时,加上端口号,否则会报错

$ ./src/redis-cli -p 6380

1.Redis String

设置单个key-value,set, 获取单个get

127.0.0.1:6380> set name Lucy

OK

127.0.0.1:6380> get name

"Lucy"

设置多个key-value,mset,  获取多个mget,(mget返回values数组)

127.0.0.1:6380> mset a 10 b 20 c 30

OK

127.0.0.1:6380> mget a b c

1) "10"

2) "20"

3) "30"

127.0.0.1:6380> get a

"10"

redis 自增, incr

127.0.0.1:6380> set counter 100

OK

127.0.0.1:6380> incr counter

(integer) 101

127.0.0.1:6380> incr counter

(integer) 102

127.0.0.1:6380> incr counter

(integer) 103

判断key是否存在,exists,1存在 0 不存在

127.0.0.1:6380> get name

"Mike"

127.0.0.1:6380> exists name

(integer) 1

删除key,del,(删除这个key-value,不仅仅删除value),1 删除成功 0删除不成功

127.0.0.1:6380> del name

(integer) 1

127.0.0.1:6380> get name

(nil)

127.0.0.1:6380> exists name

(integer) 0

127.0.0.1:6380> 

获取key数据类型,type, 若key不存在,返回none

127.0.0.1:6380> set name Jane

OK

127.0.0.1:6380> get name

"Jane"

127.0.0.1:6380> type name

string

127.0.0.1:6380> del name

(integer) 1

127.0.0.1:6380> get name
(nil)

127.0.0.1:6380> type name

none

设置redis key过期时间,expire, 一段时间后(例子为5s),相当于使用了del删除这个key-value

127.0.0.1:6380> set name Mike

OK

127.0.0.1:6380> exists name

(integer) 1

127.0.0.1:6380> expire name 1000

(integer) 1

127.0.0.1:6380> get name

"Mike"

127.0.0.1:6380> get name

"Mike"

127.0.0.1:6380> get name

"Mike"

127.0.0.1:6380> get name

"Mike"

127.0.0.1:6380> expire name 5

(integer) 1

127.0.0.1:6380> get name

(nil)

127.0.0.1:6380> exists name

(integer) 0

定义key时,利用ex设置过期时间,使用ttl获取变量离过期时间还有多久

127.0.0.1:6380> set name RRR ex 10

OK

127.0.0.1:6380> get name

"RRR"

127.0.0.1:6380> get name

"RRR"

127.0.0.1:6380> get name

(nil)

127.0.0.1:6380> ttl name

(integer) -2

2.Redis List,

Redis List是LinkedList, 使用LPUSH在list头部添加元素,RPUSH在list的尾部添加元素,使用LRANGE 0 -1读出list所有元素(0为第一个元素, -1为倒数第一个元素,-2为倒数第二个元素。以此类推)

127.0.0.1:6380> rpush nameList A

(integer) 1

127.0.0.1:6380> rpush nameList B

(integer) 2

127.0.0.1:6380> rpush nameList C

(integer) 3

127.0.0.1:6380> lpush nameList FIRST

(integer) 4

127.0.0.1:6380> lrange nameList

(error) ERR wrong number of arguments for 'lrange' command

127.0.0.1:6380> lrange nameList 0 -1

1) "FIRST"

2) "A"

3) "B"

4) "C"

127.0.0.1:6380> lrange nameList 0 -2

1) "FIRST"

2) "A"

3) "B"

127.0.0.1:6380> lrange nameList 0 1

1) "FIRST"

2) "A"

rpush或lpush均可一次性添加多个元素

127.0.0.1:6380> rpush nameList 1 2 3 4 "foo bar"

(integer) 9

127.0.0.1:6380> lrange nameList 0 -1

1) "FIRST"

2) "A"

3) "B"

4) "C"

5) "1"

6) "2"

7) "3"

8) "4"

9) "foo bar"

REDIS LIST 一个很重要的特性,因为REDIS LIST为LINKED LIST 因此支持POP 元素,分别为rpop, lpop

127.0.0.1:6380> rpop nameList

"4"

127.0.0.1:6380> lrange nameList 0 -1

1) "FIRST"

2) "A"

3) "B"

4) "C"

5) "1"

6) "2"

7) "3"

127.0.0.1:6380> lpop nameList

"FIRST"

127.0.0.1:6380> lrange nameList 0 -1

1) "A"

2) "B"

3) "C"

4) "1"

5) "2"

6) "3"

ltrim startIndex
endIndex截取startIndex~endIndex之间元素,可用于获取最新的n条元素

127.0.0.1:6380>
ltrim nameList 1 3

OK

127.0.0.1:6380> lrange nameList 0 -1

1) "B"

2) "C"

3) "1"

llen, 获取list
长度

127.0.0.1:6380>
lpush nameList 1 2 3

(integer) 3

127.0.0.1:6380> llen nameList

(integer) 3

127.0.0.1:6380> lpush nameList 5 5 5

(integer) 6

127.0.0.1:6380> llen nameList

(integer) 6

127.0.0.1:6380> del nameList 

(integer) 1

127.0.0.1:6380> llen nameList

(integer) 0

127.0.0.1:6380> lpop nameList

(nil)

注意 nil即null, llen =0 表示list不存在,type list 返回none表示 list不存在,list全部出栈则list 不存在 ,exists  list 返回0 表示list不存在

3.Redis Hash

hmset设置hash缓存,hget 获取对象属性值,hmget属性值数组

127.0.0.1:6380> hmset user:1000 name Mike age 16 address ssssss

OK

127.0.0.1:6380> hget user:1000 name

"Mike"

127.0.0.1:6380> hget user:1000 address

"ssssss"

127.0.0.1:6380> hmget user:1000

(error) ERR wrong number of arguments for 'hmget' command

127.0.0.1:6380> hmget user:1000 name age address

1) "Mike"

2) "16"

3) "ssssss"

127.0.0.1:6380> 

3.Redis Set(集合,值不能重复, 集合内元素无序)

sadd添加set值(可添加一个或多个),smembers 获取set值

127.0.0.1:6380> sadd myset 1 2 3

(integer) 3

127.0.0.1:6380> smembers myset

1) "1"

2) "2"

3) "3"

sismember判断set里是否有某个值存在,返回1 存在,返回0 不存在

127.0.0.1:6380> SISMEMBER myset 3

(integer) 1

127.0.0.1:6380> SISMEMBER myset 4

(integer) 0

scard,统计set元素个数

127.0.0.1:6380> smembers game1:1:deck

1) "B3"

2) "A2"

3) "A1"

4) "C1"

127.0.0.1:6380> scard  game1:1:deck

(integer) 4

 sunionstore 复制set元素给另一个set,把deck set元素全复制给 game1:1:deck

127.0.0.1:6380> sunionstore game1:1:deck deck

4.Redis Sorted Set (有序集合)

zadd 添加元素(单个或多个),zrange XXX 0 -1 从小到大打印所有元素,zrevrange XXX 0 -1反序打印所有元素,打印带上参数withscores打印出排序的参数

127.0.0.1:6380> zadd hackers 1940 "Alan Kay"

(integer) 1

127.0.0.1:6380> zrange hackers 0 -1

1) "Alan Kay"

127.0.0.1:6380> zadd hackers 1957 "Sophie Wilson"

(integer) 1

127.0.0.1:6380> zrange hackers 0 -1

1) "Alan Kay"

2) "Sophie Wilson"

127.0.0.1:6380> zadd hackers 1916 "Claude Shannon"

(integer) 1

127.0.0.1:6380> zrange hackers 0 -1

1) "Claude Shannon"

2) "Alan Kay"

3) "Sophie Wilson"

127.0.0.1:6380> zrevrange hackers 0 -1

1) "Sophie Wilson"

2) "Alan Kay"

3) "Claude Shannon"

127.0.0.1:6380>zrange hackers 0 -1 withscores

1) "Claude Shannon"

2) "1916"

3) "Alan Kay"

4) "1940"

5) "Sophie Wilson"

6) "1957"

选出一定范围内的数据,zrangebyscore , 注意:-inf 负无穷大  +inf 正无穷大,zrank 获得正序排列时某个元素的位置,zrevrank获得倒序排列时某个元素的位置

127.0.0.1:6380> zrangebyscore hackers -inf 1950

1) "Claude Shannon"

2) "Alan Kay"

127.0.0.1:6380> zrangebyscore hackers  1950 +inf

1) "Sophie Wilson"

127.0.0.1:6380> zrangebyscore hackers  1920 1950

1) "Alan Kay"

127.0.0.1:6380> zrangebyscore hackers  1915 1950

1) "Claude Shannon"

2) "Alan Kay" 

127.0.0.1:6380> zrange hackers 0 -1

1) "Claude Shannon"

2) "Alan Kay"

3) "Sophie Wilson"

127.0.0.1:6380> zrank hackers "Sophie Wilson"

(integer) 2

127.0.0.1:6380> zrevrank hackers "Sophie Wilson"

(integer) 0

127.0.0.1:6380> zrevrange hackers 0 -1

1) "Sophie Wilson"

2) "Alan Kay"

3) "Claude Shannon"

注意: 若scrore则redius自动按照字母排序

127.0.0.1:6380> zrange hackers 0 -1 withscores

1) "Alan Kay"

2) "0"

3) "Richard Stallman"

4) "0"

5) "Sophie Wilson"

6) "0"

7) "Claude Shannon"

8) "1916"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: