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"
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"
相关文章推荐
- redis(一) 安装以及基本数据类型操作
- redis 基本数据类型及操作学习(二)
- 4、Redis从入门到放弃 之 常用命令和基本数据类型操作
- redis数据类型和基本操作
- redis数据类型与基本操作
- java对redis各种数据类型的基本操作
- Redis-Service.Stack.Redis对Redis基本数据类型String,List,Hash,Set,ZSet的操作
- Redis从入门到放弃 之 常用命令和基本数据类型操作
- Redis 基础知识(5种数据类型基本操作)
- redis复习(一):基本知识点----安装、基本数据类型和相关操作
- redis基本数据类型和常用命令操作
- Redis基本数据类型和相关操作
- redis中的五种数据类型和基本操作
- Redis 中的数据类型与基本操作
- redis实战基础篇:redis的5种数据类型的基本操作
- java 对redis几种数据类型的基本操作
- Redis (二 各种数据类型下支持的基本命令)
- Redis中基本数据类型的操作
- Redis常用数据类型及基本操作
- redis支持的数据类型、操作指令及使用场景