redis数据类型操作

redis数据类型操作 redis的安装配置参见: http://www.ttlsa.com/html/1226.html 一.value exists key:测试指定的key是否存在,1表示存在,0表示不存在 del key1 key2 ...keyN: 删除指定的key type key: 返回指定key的value类型,返回none表示不存在key,string字符类型,list链表类型,set无序集合类型等 keys pattern: 返回匹配的所有key randomkey: 从当前数据库中随机选择一个key rename oldkey newkey: 重命名key,如果newkey存在将会被覆盖 rename oldkey newkey: 重命名key,如果newkey存在则失败 dbsize: 返回当前数据库中key的数量 expire key seconds: 指定key过期时间,单位是s ttl key: 返回设置过期时间的key的剩余过期秒数,-1表示key不存在或没有设置过期时间 select db_index: 通过索引选择数据库,默认连接的数据库所有是0,默认数据库数是16个。返回1表示成功,0失败 move key db-index 将key从当前数据库移动到指定数据库。返回1成功。0 如果key不存在,或者已经在指定数据库中 flushdb:删除当前选择数据库中的所有key flushall:删除所有数据库中的所有key 操作实例如下: $ ./redis-cli -h 127.0.0.1 -p 6379 -a "redis" //登录到redis -a是密码 redis 127.0.0.1:6379> exists a (integer) 1 redis 127.0.0.1:6379> type a string redis 127.0.0.1:6379> get key2 "10" redis 127.0.0.1:6379> get a "11111" redis 127.0.0.1:6379> rename a key2 OK redis 127.0.0.1:6379> exists a (integer) 0 redis 127.0.0.1:6379> get key2 "11111" redis 127.0.0.1:6379> dbsize (integer) 4 redis 127.0.0.1:6379> expire key2 100000000 (integer) 1 redis 127.0.0.1:6379> ttl key2 (integer) 99999996 redis 127.0.0.1:6379> select 3 OK redis 127.0.0.1:6379[3]> select 0 OK redis 127.0.0.1:6379> move key2 3 (integer) 1 redis 127.0.0.1:6379> select 3 OK redis 127.0.0.1:6379[3]> dbsize (integer) 1 redis 127.0.0.1:6379[3]> get key2 "11111" redis 127.0.0.1:6379[3]> flushdb OK redis 127.0.0.1:6379[3]> dbsize (integer) 0 二.string set key value: 设置key对应的值为string类型的value,返回1表示成功,0失败 setnx key value: 同上,如果key已经存在,返回0 。nx 是not exist的意思 setex key time value: 设置key对应的值为string类型的value,同时指定过期时间,如果key存在将覆盖value值 get key: 获取key对应的string值,如果key不存在返回nil getset key value: 原子的设置key的值,并返回key的旧值。如果key不存在返回nil mget key1 key2 ... keyN: 一次获取多个key的值,如果对应key不存在,则对应返回nil mset key1 value1 ... keyN valueN: 一次设置多个key的值,成功返回1表示所有的值都设置了,失败返回0表示没有任何值被设置 msetnx key1 value1 ... keyN valueN: 同上,但是不会覆盖已经存在的key incr key: 对key的值做加加操作,并返回新的值。注意incr一个不是int的value会返回错误,incr一个不存在的key,则设置key为1 decr key: 同上,但是做的是减减操作,decr一个不存在key,则设置key为-1 incrby key integer: 同incr,加指定值 ,key不存在时候会设置key,并认为原来的value是 0 decrby key integer: 同decr,减指定值。decrby完全是为了可读性,我们完全可以通过incrby一个负值来实现同样效果,反之一样 append key value: 给指定key的字符串值追加value,返回新字符串值的长度 substr key start end: 返回截取过的key的字符串值,注意并不修改key的值 操作实例如下: redis 127.0.0.1:6379> set key1 value1 OK redis 127.0.0.1:6379> setnx key1 aaaa (integer) 0 redis 127.0.0.1:6379> setex key1 1000000 aaaaa OK redis 127.0.0.1:6379> get key1 "aaaaa" redis 127.0.0.1:6379> ttl key1 (integer) 999963 redis 127.0.0.1:6379> getset key1 bbbbb "aaaaa" redis 127.0.0.1:6379> dbsize (integer) 1 redis 127.0.0.1:6379> get key1 "bbbbb" redis 127.0.0.1:6379> ttl key1 (integer) -1 redis 127.0.0.1:6379> set key2 value2 OK redis 127.0.0.1:6379> mget key1 key2 key3 1) "bbbbb" 2) "value2" 3) (nil) redis 127.0.0.1:6379> mset key4 value4 key5 value5 OK redis 127.0.0.1:6379> mget key1 key2 key3 key4 key5 1) "bbbbb" 2) "value2" 3) (nil) 4) "value4" 5) "value5" redis 127.0.0.1:6379> incr key5 (error) ERR value is not an integer or out of range redis 127.0.0.1:6379> mset key6 1000 key7 2000 OK redis 127.0.0.1:6379> mget key6 key7 1) "1000" 2) "2000" redis 127.0.0.1:6379> incr key6 (integer) 1001 redis 127.0.0.1:6379> incrby key7 222 (integer) 2222 redis 127.0.0.1:6379> mget key6 key7 1) "1001" 2) "2222" redis 127.0.0.1:6379> decr key7 (integer) 2221 redis 127.0.0.1:6379> decrby key6 1000 (integer) 1 redis 127.0.0.1:6379> mget key6 key7 1) "1" 2) "2221" redis 127.0.0.1:6379> get key1 "bbbbb" redis 127.0.0.1:6379> append key1 ccccccc (integer) 12 redis 127.0.0.1:6379> get key1 "bbbbbccccccc" redis 127.0.0.1:6379> substr key1 4 7 "bccc" redis 127.0.0.1:6379> get key1 "bbbbbccccccc" 三.list lpush key string: 在key对应list的头部添加字符串元素,返回1表示成功,0表示key存在且不是list类型 rpush key string: 同上,在尾部添加 llen key: 返回key对应list的长度,key不存在返回0,如果key对应类型不是list返回错误 lrange key start end: 返回指定区间内的元素,下标从0开始,负值表示从后面计算,-1表示倒数第一个元素 ,key不存在返回空列表 ltrim key start end: 删除指定key 的值范围以外的数据,成功返回1,key不存在返回错误 lset key index value: 设置list中指定下标的元素值(下标从0开始),成功返回1,key或者下标不存在返回错误 lrem key count value: 从key对应list中删除count个和value相同的元素。count为0时候删除全部 lpop key: 从list的头部删除元素,并返回删除元素。如果key对应list不存在或者是空返回nil,如果key对应值不是list返回错误 rpop: 同上,但是从尾部删除 blpop key1...keyN timeout: lpop命令的block版本。从左到右扫描返回对第一个非空list进行lpop操作并返回,比如blpop list1 list2 list3 0 ,如果list不存在list2,list3都是非空则对list2做lpop并返回从list2中删除的元素。如果所有的list都是空或不存在,则会阻塞timeout秒,timeout为0表示一直阻塞。当阻塞时,如果有client对key1...keyN中的任意key进行push操作,则第一在这个key上被阻塞的client会立即返回。如果超时发生,则返回nil。 brpop: rpop的block版本。同blpop,一个是从头部删除一个是从尾部删除 rpoplpush srckey destkey: 从srckey对应list的尾部移除元素并添加到destkey对应list的头部,最后返回被移除的元素值,整个操作是原子的.如果srckey是空或者不存在返回nil 操作实例如下: redis 127.0.0.1:6379> lpush k_list_1 aaaaaa (integer) 1 redis 127.0.0.1:6379> lpush k_list_1 bbbbbb (integer) 2 redis 127.0.0.1:6379> lpush k_list_1 c (integer) 3 redis 127.0.0.1:6379> redis 127.0.0.1:6379> redis 127.0.0.1:6379> llen k_list_1 (integer) 3 redis 127.0.0.1:6379> lrange k_list_1 0 2 1) "c" 2) "bbbbbb" 3) "aaaaaa" redis 127.0.0.1:6379> rpush k_list_1 dddddd (integer) 4 redis 127.0.0.1:6379> rpush k_list_1 eeeeee (integer) 5 redis 127.0.0.1:6379> rpush k_list_1 f (integer) 6 redis 127.0.0.1:6379> llen k_list_1 (integer) 6 redis 127.0.0.1:6379> lrange k_list_1 0 5 1) "c" 2) "bbbbbb" 3) "aaaaaa" 4) "dddddd" 5) "eeeeee" 6) "f" redis 127.0.0.1:6379> lrange k_list_1 2 -1 1) "aaaaaa" 2) "dddddd" 3) "eeeeee" 4) "f" redis 127.0.0.1:6379> lrange k_list_1 0 5 1) "c" 2) "bbbbbb" 3) "aaaaaa" 4) "dddddd" 5) "eeeeee" 6) "f" redis 127.0.0.1:6379> ltrim k_list_1 1 2 OK redis 127.0.0.1:6379> lrange k_list_1 0 1 1) "bbbbbb" 2) "aaaaaa" redis 127.0.0.1:6379> lpush k_list_2 a (integer) 1 redis 127.0.0.1:6379> lpush k_list_2 b (integer) 2 redis 127.0.0.1:6379> lpush k_list_2 c (integer) 3 redis 127.0.0.1:6379> lpush k_list_2 d (integer) 4 redis 127.0.0.1:6379> lpush k_list_2 e (integer) 5 redis 127.0.0.1:6379> lpush k_list_2 f (integer) 6 redis 127.0.0.1:6379> lrange k_list_2 0 5 1) "f" 2) "e" 3) "d" 4) "c" 5) "b" 6) "a" redis 127.0.0.1:6379> lset k_list_2 1 "99999999999999999999" OK redis 127.0.0.1:6379> lrange k_list_2 0 5 1) "f" 2) "99999999999999999999" 3) "d" 4) "c" 5) "b" 6) "a" redis 127.0.0.1:6379> lrange k_list_2 0 5 1) "99999999999999999999" 2) "d" 3) "99999999999999999999" 4) "c" 5) "99999999999999999999" 6) "a" redis 127.0.0.1:6379> LREM k_list_2 2 "99999999999999999999" (integer) 2 redis 127.0.0.1:6379> lrange k_list_2 0 3 1) "d" 2) "c" 3) "99999999999999999999" 4) "a" redis 127.0.0.1:6379> lpop k_list_2 "d" redis 127.0.0.1:6379> lrange k_list_2 0 2 1) "c" 2) "99999999999999999999" 3) "a" redis 127.0.0.1:6379> rpop k_list_2 "a" redis 127.0.0.1:6379> lrange k_list_2 0 2 1) "c" 2) "99999999999999999999" redis 127.0.0.1:6379> lpush k_list_3 aaaaaaaaaaaa (integer) 1 redis 127.0.0.1:6379> lpush k_list_3 bbbbbbbbbbbb (integer) 2 redis 127.0.0.1:6379> lpush k_list_3 cccccccccccc (integer) 3 redis 127.0.0.1:6379> lpush k_list_3 dddddddddddd (integer) 4 redis 127.0.0.1:6379> lpush k_list_4 111111111111 (integer) 1 redis 127.0.0.1:6379> lpush k_list_4 222222222222 (integer) 2 redis 127.0.0.1:6379> lpush k_list_4 333333333333 (integer) 3 redis 127.0.0.1:6379> lpush k_list_4 444444444444 redis 127.0.0.1:6379> LRANGE k_list_3 0 3 1) "dddddddddddd" 2) "cccccccccccc" 3) "bbbbbbbbbbbb" 4) "aaaaaaaaaaaa" redis 127.0.0.1:6379> LRANGE k_list_4 0 3 1) "444444444444" 2) "333333333333" 3) "222222222222" 4) "111111111111" redis 127.0.0.1:6379> rpoplpush k_list_3 k_list_4 "aaaaaaaaaaaa" redis 127.0.0.1:6379> LRANGE k_list_3 0 3 1) "dddddddddddd" 2) "cccccccccccc" 3) "bbbbbbbbbbbb" redis 127.0.0.1:6379> LRANGE k_list_4 0 4 1) "aaaaaaaaaaaa" 2) "444444444444" 3) "333333333333" 4) "222222222222" 5) "111111111111" 四.set sadd key member: 向名称为key的set中添加元素member srem key member: 删除名称为key的set中的元素member spop key: 随机返回并删除名称为key的set中一个元素 srandmember key: 随机返回名称为key的set的一个元素,但是不删除元素 smove srckey dstkey member: 从srckey对应set中移除member并添加到dstkey对应set中,整个操作是原子的。成功返回1,如果member在srckey中不存在返回0,如果key不是set类型返回错误 scard key: 返回名称为key的set的元素个数,如果set是空或者key不存在返回0 sismember key member: 测试member是否是名称为key的set的元素 sinter key1 key2...keyN: 返回所有给定key的交集 sinterstore dstkey key1...keyN: 同sinter,求交集并将交集保存到dstkey的集合 sunion key1 key2...keyN: 返回所有给定key的并集 sunionstore dstkey key1...keyN: 同sunion,求并集并将并集保存到dstkey的集合 sdiff key1 key2...keyN: 返回所有给定key的差集 sdiffstore dstkey key1...keyN: 同sdiff,求差集并将差集保存到dstkey的集合 smembers key: 返回key对应set的所有元素,结果是无序的 操作实例: redis 127.0.0.1:6379> sadd k_s_1 aaa (integer) 1 redis 127.0.0.1:6379> sadd k_s_1 bbb (integer) 1 redis 127.0.0.1:6379> sadd k_s_1 ccc (integer) 1 redis 127.0.0.1:6379> sadd k_s_1 ddd (integer) 1 redis 127.0.0.1:6379> sadd k_s_2 111 (integer) 1 redis 127.0.0.1:6379> sadd k_s_2 222 (integer) 1 redis 127.0.0.1:6379> sadd k_s_2 333 (integer) 1 redis 127.0.0.1:6379> sadd k_s_2 444 (integer) 1 redis 127.0.0.1:6379> smembers k_s_1 1) "aaa" 2) "ddd" 3) "ccc" 4) "bbb" redis 127.0.0.1:6379> srandmember k_s_1 "ccc" redis 127.0.0.1:6379> spop k_s_1 "bbb" redis 127.0.0.1:6379> smembers k_s_1 1) "aaa" 2) "ddd" 3) "ccc" redis 127.0.0.1:6379> smove k_s_1 k_s_2 "aaa" (integer) 1 redis 127.0.0.1:6379> smembers k_s_1 1) "ddd" 2) "ccc" redis 127.0.0.1:6379> smembers k_s_2 1) "111" 2) "444" 3) "333" 4) "222" 5) "aaa redis 127.0.0.1:6379> scard k_s_2 (integer) 5 redis 127.0.0.1:6379> sismember k_s_1 "aaa" (integer) 0 redis 127.0.0.1:6379> smembers k_s_1 1) "aaa" 2) "ddd" 3) "ccc" redis 127.0.0.1:6379> smembers k_s_2 1) "333" 2) "222" 3) "111" 4) "aaa" 5) "444" redis 127.0.0.1:6379> sinter k_s_1 k_s_2 1) "aaa" redis 127.0.0.1:6379> sinterstore k_ss k_s_1 k_s_2 (integer) 1 redis 127.0.0.1:6379> smembers k_ss 1) "aaa" redis 127.0.0.1:6379> sunion k_s_1 k_s_2 1) "aaa" 2) "111" 3) "ddd" 4) "444" 5) "222" 6) "333" 7) "ccc" redis 127.0.0.1:6379> sunionstore k_sun k_s_1 k_s_2 (integer) 7 redis 127.0.0.1:6379> smembers k_sun 1) "aaa" 2) "111" 3) "ddd" 4) "444" 5) "222" 6) "333" 7) "ccc" redis 127.0.0.1:6379> sdiff k_s_1 k_s_2 1) "ddd" 2) "ccc" redis 127.0.0.1:6379> sdiff k_s_2 k_s_1 1) "111" 2) "444" 3) "222" 4) "333" 五.zset(sorted set) zadd key score member: 向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序 zrem key member: 删除名称为key的zset中的元素member zincrby key incr member: 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment zrank key member: 返回名称为key的zset(元素已按score从小到大排序)中member元素的排名即下标(即index,从0开始),若没有member元素,返回“nil” zrevrank key member: 返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil” zrange key start end: 返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素 zrevrange key start end: 返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素 zrangebyscore key min max: 返回集合中score在给定区间的元素 zcount key min max: 返回集合中score在给定区间的数量 zcard key: 返回集合中元素个数 zscore key element: 返回给定元素对应的score zremrangebyrank key min max: 删除集合中排名在给定区间的元素 zremrangebyscore key min max: 删除集合中score在给定区间的元素 操作实例: redis 127.0.0.1:6379> zadd k_zs_1 1 aaaa (integer) 1 redis 127.0.0.1:6379> zadd k_zs_1 1 bbbb (integer) 1 redis 127.0.0.1:6379> zadd k_zs_1 1 ccccc (integer) 1 redis 127.0.0.1:6379> zadd k_zs_1 1 aabb (integer) 1 redis 127.0.0.1:6379> zrange k_zs_1 0 3 1) "aaaa" 2) "aabb" 3) "bbbb" 4) "ccccc" redis 127.0.0.1:6379> zrem k_zs_1 "ccccc" (integer) 1 redis 127.0.0.1:6379> zrange k_zs_1 0 3 1) "aaaa" 2) "aabb" 3) "bbbb" redis 127.0.0.1:6379> zadd k_zs_1 3 aaaa (integer) 0 redis 127.0.0.1:6379> zrange k_zs_1 0 3 1) "aabb" 2) "bbbb" 3) "aaaa" redis 127.0.0.1:6379> zincrby k_zs_1 5 aabb "6" redis 127.0.0.1:6379> zincrby k_zs_1 5 aabbcc "5" redis 127.0.0.1:6379> zrange k_zs_1 0 3 1) "bbbb" 2) "aaaa" 3) "aabbcc" 4) "aabb" redis 127.0.0.1:6379> zrank k_zs_1 "aaaa" (integer) 1 redis 127.0.0.1:6379> zscore k_zs_1 "bbbb" "1" redis 127.0.0.1:6379> zscore k_zs_1 "aaaa" "3" redis 127.0.0.1:6379> zscore k_zs_1 "aabbcc" "5" redis 127.0.0.1:6379> zscore k_zs_1 "aabb" "6" redis 127.0.0.1:6379> zscore k_zs_1 "aabbccdd" "9" redis 127.0.0.1:6379> zrangebyscore k_zs_1 4 9 1) "aabbcc" 2) "aabb" 3) "aabbccdd" redis 127.0.0.1:6379> zcount k_zs_1 4 9 (integer) 3 redis 127.0.0.1:6379> zcard k_zs_1 (integer) 5 redis 127.0.0.1:6379> zrange k_zs_1 0 6 1) "bbbb" 2) "aaaa" 3) "aabbcc" 4) "aabb" 5) "aabbccdd" redis 127.0.0.1:6379> zremrangebyrank k_zs_1 0 1 (integer) 2 redis 127.0.0.1:6379> zrange k_zs_1 0 6 1) "aabbcc" 2) "aabb" 3) "aabbccdd" redis 127.0.0.1:6379> zrange k_zs_1 0 6 1) "aabbcc" 2) "aabb" 3) "aabbccdd" redis 127.0.0.1:6379> zscore k_zs_1 "aabbcc" "5" redis 127.0.0.1:6379> zscore k_zs_1 "aabb" "6" redis 127.0.0.1:6379> zscore k_zs_1 "aabbccdd" "9" redis 127.0.0.1:6379> zremrangebyscore k_zs_1 6 9 (integer) 2 redis 127.0.0.1:6379> zrange k_zs_1 0 6 1) "aabbcc" 六.hash hset key field value: 向名称为key的hash中添加元素field<—>value hget key field: 返回名称为key的hash中field对应的value hmget key filed1....fieldN: 返回名称为key的hash中field i对应的value hmset key filed1 value1 ... filedN valueN: 向名称为key的hash中添加元素field i<—>value i hincrby key field integer: 将名称为key的hash中field的value加上给定值 hexists key field: 测试名称为key的hash中是否存在键为field的域 hdel key field: 删除名称为key的hash中键为field的域 hlen key: 返回名称为key的hash中元素个数 hkeys key: 返回名称为key的hash中所有field hvals key: 返回名称为key的hash中所有field对应的value hgetall key: 返回名称为key的hash中所有的键(field)及其对应的value 操作实例如下: redis 127.0.0.1:6379> hmset k_h_1 f1 aaaa f2 bbbb f3 cccc f4 dddd f5 cccc f6 1000 OK redis 127.0.0.1:6379> hmget k_h_1 f1 f2 f3 f4 f5 f6 1) "aaaa" 2) "bbbb" 3) "cccc" 4) "dddd" 5) "cccc" 6) "1000" redis 127.0.0.1:6379> hincrby k_h_1 f6 99 (integer) 1099 redis 127.0.0.1:6379> hget k_h_1 f6 "1099" redis 127.0.0.1:6379> hexists k_h_1 f6 (integer) 1 redis 127.0.0.1:6379> hdel k_h_1 f6 (integer) 1 redis 127.0.0.1:6379> hexists k_h_1 f6 (integer) 0 redis 127.0.0.1:6379> hlen k_h_1 (integer) 5 redis 127.0.0.1:6379> hkeys k_h_1 1) "f1" 2) "f2" 3) "f3" 4) "f4" 5) "f5" redis 127.0.0.1:6379> hvals k_h_1 1) "aaaa" 2) "bbbb" 3) "cccc" 4) "dddd" 5) "cccc" redis 127.0.0.1:6379> hgetall k_h_1 1) "f1" 2) "aaaa" 3) "f2" 4) "bbbb" 5) "f3" 6) "cccc" 7) "f4" 8) "dddd" 9) "f5" 10) "cccc"

你可能感兴趣的:(数据类型)