以下是本人,详细操作:
东西比较多.所以写一点,保存一些.见谅
- string类型
- set/get 最常见也是最简单的操作.key value 键值对;
192.168.159.130:7000> set num 1 OK 192.168.159.130:7000> get num "1" 192.168.159.130:7000> get age (nil)
- setnx 同set 区别在于 如果key值存在,不覆盖返回0, 如果key值不存在,设置值.并且返回1(nx not exist)
192.168.159.130:7000> setnx num 1 (integer) 0 192.168.159.130:7000> get num "1" 192.168.159.130:7000> setnx age 1 (integer) 1 192.168.159.130:7000> get age "1"
- setex 同set 区别在于可以给数据加一个失效时间. set key 时间 value
192.168.159.130:7000> setex num 5 1 OK 192.168.159.130:7000> get num "1" 192.168.159.130:7000> get num "1" 192.168.159.130:7000> get num (nil)
- setrange 同set 可以替换value值 setrange key 要替换的开始索引 替换的值 替换的长度取决于替换值的长度.长度不够,原值补充
192.168.159.130:7001> set name helloworld OK 192.168.159.130:7001> SETRANGE name 1 t (integer) 10 192.168.159.130:7001> get name "htlloworld" 192.168.159.130:7001> setrange name 0 helloworld (integer) 10 192.168.159.130:7001> get name "helloworld"
- mset 同set 一次设置多个值(特点要么全部成功,要不全部失败) set key1 value1 key2 value2 ... 这里不做演示(因为我的环境是redis集群,设置多个值的时候,redis有可能会报CROSSSLOT Keys in request don't hash to the same slot 异常.原因请看下一篇关于redis的文章)
- getset 同set 只不过会返回key的原值 没有返回nil
192.168.159.130:7000> getset age 1 "2" 192.168.159.130:7000> getset age 2 "1" 192.168.159.130:7000> getset take 2 (nil) 192.168.159.130:7000> getset take 1 "2"
- getrange 获取值的一部分 getrange key 开始索引 结束索引
192.168.159.130:7001> GETRANGE name 0 (error) ERR wrong number of arguments for 'getrange' command 192.168.159.130:7001> GETRANGE name 0 4 "hello" 192.168.159.130:7001> GETRANGE name 0 18 "helloworld"
- mget 同 get 特点是一次后去多个 key 锁对应的值. mget key1 key2 ... 这里不做演示.原因同mset
- incr 增加对应key 的value值 incr key 返回增加后的value值
192.168.159.130:7001> get name "helloworld" 192.168.159.130:7001> INCR name (error) ERR value is not an integer or out of range 192.168.159.130:7001> set name 1 OK 192.168.159.130:7001> INCR name (integer) 2
- incrby 同incr 特点是可以根据你给定的值 增加key对应的value值.如果key值不存在直接设置key值(incr 也相同)
192.168.159.130:7003> get student (nil) 192.168.159.130:7001> INCRBY student 10 (integer) 10 192.168.159.130:7001> get student "10" 192.168.159.130:7001> INCRBY student 2 (integer) 12
- decr 和decrby 这里不做介绍.同incr
- append 相当于java中的 stringbuffer 里的append方法 .向后追加字符串
192.168.159.130:7001> set name aa OK 192.168.159.130:7001> get name "aa" 192.168.159.130:7001> APPEND name bb (integer) 4 192.168.159.130:7001> get name "aabb"
- strlen 获取对象key的value值长度
192.168.159.130:7001> get name "aabb" 192.168.159.130:7001> strlen name (integer) 4 192.168.159.130:7001> set name 1 OK 192.168.159.130:7001> STRLEN name (integer)
2.HASH字典类型
- hset key field value(设置或者新增对象的一个属性),hget key field (获取对象的单个属性值),hsetnx(同string类型的setnx 设置属性值 如果有值则不执行)
192.168.159.130:7000> hset person age 10 (integer) 1 192.168.159.130:7000> hget person age "10" 192.168.159.130:7000> hsetnx person age 5 (integer) 0 192.168.159.130:7000> hsetnx person sex 1 (integer) 1 192.168.159.130:7000> hget person sex "1"
- hmset key field1 value1 field2 value2...(批量设置对象属性),hmget key field1 field2..(批量获取对象属性值),hgetall key(获取对象所有的属性以及属性值)
192.168.159.130:7001> hmset person name xiaoming age 5 sex 1 OK 192.168.159.130:7000> hmget person name age sex 1) "xiaoming" 2) "5" 3) "1" 192.168.159.130:7000> hgetall person 1) "name" 2) "xiaoming" 3) "age" 4) "5" 5) "sex" 6) "1"
- hexists key field(判断是否属性是否存在),hlen key(返回对象属性条数),hdel key field( 删除指定属性),hkeys key (返回对象所有属性名),hvals key(返回对象所有属性值)
192.168.159.130:7000> HINCRBY person sex 1 (integer) 2 192.168.159.130:7000> HEXISTS person hobby (integer) 0 192.168.159.130:7000> hlen person (integer) 3 192.168.159.130:7000> hkeys (error) ERR wrong number of arguments for 'hkeys' command 192.168.159.130:7000> hkeys person 1) "name" 2) "age" 3) "sex" 192.168.159.130:7000> hvals person 1) "xiaoming" 2) "5" 3) "2" 192.168.159.130:7000> hdel person sex (integer) 1 192.168.159.130:7000> hget person sex (nil)
3.LIST 队列数据类型
- lpush key value1 value2 ...(从头部依次插入数据),rpush key value1,value2..(从尾部依次插入数据),lrange key 开始索引 结束索引 (查询指定索引范围内的元素 0 -1标示全部)
192.168.159.130:7000> LPUSH mylist a
-> Redirected to slot [5282] located at 192.168.159.130:7001
(integer) 1
192.168.159.130:7001> lpush mylist b
(integer) 2
192.168.159.130:7001> LRANGE 0 -1
(error) ERR wrong number of arguments for 'lrange' command
192.168.159.130:7001> LRANGE mylist 0 -1
1) "b"
2) "a"
192.168.159.130:7001> rpush mylist c
(integer) 3
192.168.159.130:7001> lrange mylist 0 -1
1) "b"
2) "a"
3) "c"
- linsert key value before/after 待插入值 (在指定值的前后插入值)
192.168.159.130:7001> lrange mylist 0 -1 1) "b" 2) "a" 3) "c" 192.168.159.130:7001> linsert mylist before a d (integer) 4 192.168.159.130:7001> lrange mylist 0 -1 1) "b" 2) "d" 3) "a" 4) "c" 192.168.159.130:7001> linsert mylist after a e (integer) 5 192.168.159.130:7001> lrange mylist 0 -1 1) "b" 2) "d" 3) "a" 4) "e" 5) "c"
- lset key 位置 value(替换自定位子的值)
192.168.159.130:7000> lset mylist 1 f OK 192.168.159.130:7001> lrange mylist 0 -1 1) "b" 2) "f" 3) "a" 4) "e" 5) "c"
- lrem key 个数 value(删除队列中值为value的元素,个数为正数从头开始删除,个数为负数从尾部开始删除,个数为0全部删除
192.168.159.130:7001> lrange mylist 0 -1 1) "b" 2) "a" 3) "b" 4) "a" 5) "a" 6) "b" 7) "f" 8) "a" 9) "e" 10) "c" 192.168.159.130:7001> lrem mylist 1 a (integer) 1 192.168.159.130:7001> lrange mylist 0 -1 1) "b" 2) "b" 3) "a" 4) "a" 5) "b" 6) "f" 7) "a" 8) "e" 9) "c" 192.168.159.130:7001> lrem mylist -1 a (integer) 1 192.168.159.130:7001> lrange mylist 0 -1 1) "b" 2) "b" 3) "a" 4) "a" 5) "b" 6) "f" 7) "e" 8) "c" 192.168.159.130:7001> lrem mylist 0 b (integer) 3 192.168.159.130:7001> lrange mylist 0 -1 1) "a" 2) "a" 3) "f" 4) "e" 5) "c"
- ltrim 保留指定范围内数据 成功返回ok
192.168.159.130:7001> lrange mylist 0 -1
1) "a"
2) "a"
3) "f"
4) "e"
5) "c"
192.168.159.130:7001> ltim mylist 1 2
(error) ERR unknown command 'ltim'
192.168.159.130:7001> ltrim mylist 1 2
OK
192.168.159.130:7001> lrange mylist 0 -1
1) "a"
2) "f"
- llen 返回list个数
192.168.159.130:7001> ltrim mylist 3 7
OK
192.168.159.130:7001> lrange mylist 0 -1
(empty list or set)
192.168.159.130:7001> llen mylist
(integer) 0
- lpop 和rpop 前者是从头部弹出一个数据 后者是从尾部弹出一个数据
192.168.159.130:7001> lpop mylist
(nil)
192.168.159.130:7001> lpush mylist a
(integer) 1
192.168.159.130:7001> lpush mylist b
(integer) 2
192.168.159.130:7001> lrange mylist 0 -1
1) "b"
2) "a"
192.168.159.130:7001> rpop mylist
"a"
- lindex (返回指定索引的数据) rpoplpush(弹出前一个list尾部数据 压入后一个list头部,这个方法如果集群也不适合)
192.168.159.130:7001> lindex mylist 1
(nil)
192.168.159.130:7001> lindex mylist 0
"b"
4
.set数据类型 是string类型的无序集合 是通过hashtable实现的,可以进行并集,交集,差集.
- sadd 新增元素 smembers 显示所有元素
192.168.159.130:7003> sadd myset a
-> Redirected to slot [560] located at 192.168.159.130:7000
(integer) 1
192.168.159.130:7000> smembers myset
1) "a"
- srem 删除 spop 随机弹出一个元素
192.168.159.130:7000> sadd myset c d e f g
(integer) 5
192.168.159.130:7000> smembers myset
1) "c"
2) "g"
3) "a"
4) "d"
5) "e"
6) "b"
7) "f"
192.168.159.130:7000> srem myset a
(integer) 1
192.168.159.130:7000> smembers myset
1) "g"
2) "d"
3) "e"
4) "c"
5) "b"
6) "f"
192.168.159.130:7000> spop myset
"d"
- sdiff 差集 sinter交集 sunion 并集 sinterstore 取交集并存储到另一个集合中 sunion 取并集并储存到另一个集合中
这里因为我用的是集群式redis 对上述命令不支持.所以不进行演示. 并集交集 用的很少缺很经典 比如 qq共同好友 好友迁移之类
- smove (移动一个集合的元素到另一个集合) scard(返回集合元素数量)
192.168.159.130:7002> SMOVE myset myset1 *
(error) CROSSSLOT Keys in request don't hash to the same slot
192.168.159.130:7002> SMOVE myset myset1 a
(error) CROSSSLOT Keys in request don't hash to the same slot
192.168.159.130:7002> scard myset
-> Redirected to slot [560] located at 192.168.159.130:7000
(integer) 5
192.168.159.130:7000>
- sismember 判断集合中是否有这个元素 srandmember 随机返回集合中的一个元素
192.168.159.130:7000> sismember myset a
(integer) 0
192.168.159.130:7000> sismember myset b
(integer) 1
192.168.159.130:7000> srandmember myset
"b"
192.168.159.130:7000> srandmember myset
"f"
5
.zset类型,是在set类型上的升级.增加了顺序score
- zadd 添加元素 zrange 显示元素 (withscore带分数)
192.168.159.130:7000> zadd myzset a
(error) ERR wrong number of arguments for 'zadd' command
192.168.159.130:7000> zadd myzset 1 a
(integer) 1
192.168.159.130:7000> zadd myzset 3 a
(integer) 0
192.168.159.130:7000> zadd myzset 3 b
(integer) 1
192.168.159.130:7000> zadd myzset 2 c
(integer) 1
192.168.159.130:7000> zrange 0 -1
(error) ERR wrong number of arguments for 'zrange' command
192.168.159.130:7000> zrange myzset 0 -1
1) "c"
2) "a"
3) "b"
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "a"
4) "3"
5) "b"
6) "3"
192.168.159.130:7000> zadd myzset 1 a
(integer) 0
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "a"
2) "1"
3) "c"
4) "2"
5) "b"
6) "3"
- zrem 删除集合中对应元素 zincrby 增加对应元素分数 如果元素不存在对应添加元素
192.168.159.130:7000> zrem myzset a
(integer) 1
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "b"
4) "3"
192.168.159.130:7000> zincrby myzset 5 a
"5"
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "b"
4) "3"
5) "a"
6) "5"
192.168.159.130:7000> zincrby myzset 3 b
"6"
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "a"
4) "5"
5) "b"
6) "6"
- zrank 返回元素位子 zrevrank 返回元素位子(逆序)
192.168.159.130:7000> zrange myzset 0 -1 withscores
1) "c"
2) "2"
3) "a"
4) "5"
5) "b"
6) "6"
192.168.159.130:7000> lrank myzset a
(error) ERR unknown command 'lrank'
192.168.159.130:7000> zrank myzset a
(integer) 1
192.168.159.130:7000> zrank myzset c
(integer) 0
192.168.159.130:7000> zrank myzset b
(integer) 2
192.168.159.130:7000> zrevrank myzset a
(integer) 1
192.168.159.130:7000> zrevrank myzset c
(integer) 2
- zrevrange 返回逆序排序的元素 zrangebyscore 根据给定的分数区间查询元素
192.168.159.130:7000> zrevrange myzset 0 -1
1) "b"
2) "a"
3) "c"
192.168.159.130:7000> zrevrange myzset 0 -1 withscores
1) "b"
2) "6"
3) "a"
4) "5"
5) "c"
6) "2"
192.168.159.130:7000> zrangebyscore myzset 0 5
1) "c"
2) "a"
192.168.159.130:7000> zrangebyscore myzset 0 5 withscores
1) "c"
2) "2"
3) "a"
4) "5
- zcount 返回分数区间元素个数
192.168.159.130:7000> zcount myzset 0 8
(integer) 3
192.168.159.130:7000> zcount myzset 0 2
(integer) 1
192.168.159.130:7000> zcount myzset 0 1
(integer) 0
192.168.159.130:7000> zcount myzset 0 -1
(integer) 0
- zcard 获取集合中元素数量 zremrangebyrank 根据排名删除 zremrangebyscore 根据分数区间删除
192.168.159.130:7001> zremrangebyrank myzset 0 1
-> Redirected to slot [1515] located at 192.168.159.130:7000
(integer) 2
192.168.159.130:7000> zrange 0 -1
(error) ERR wrong number of arguments for 'zrange' command
192.168.159.130:7000> zrange myzset 0 -1
1) "b"
192.168.159.130:7000> ZREMRANGEBYSCORE myzset 0 3
(integer) 0
192.168.159.130:7000> ZREMRANGEBYSCORE myzset 0 7
(integer) 1
==============================================================================================================
redis 数据类型 的命令以及范例 写完了 .希望能帮到大家.下一篇关于redis的博文 是redis的接口类 jedis API剖析