在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
redis存储数据的基本类型有:string(字符串类型)、hash(散列类型)、list(列表类型)、set(集合类型)、zset(有序集合类型)。 依次做一些练习。redis命令不区分大小写。 key相关操作127.0.0.1:6379> set key hello ## 设置 OK 127.0.0.1:6379> set key1 world OK 127.0.0.1:6379> keys ke* ## keys查询键名 1) "key1" 2) "key" 127.0.0.1:6379> del key1 ## 删除键值对 (integer) 1 127.0.0.1:6379> exists key ##查询键名是否存在 (integer) 1 ##存在返回1 127.0.0.1:6379> exists key1 (integer) 0 ##不存在返回0 127.0.0.1:6379> type key ##查询键值的类型 string 字符串类型127.0.0.1:6379> exists num (integer) 0 127.0.0.1:6379> incr num ##incr一个不存在的值,先创建新值,赋值为0,再自增1.院子操作。 对应的是decr (integer) 1 127.0.0.1:6379> set key hello OK 127.0.0.1:6379> incr key ##无法对string自增 (error) ERR value is not an integer or out of range 127.0.0.1:6379> incrby num 3 ##increby增加指定的数值,对应的是decrby (integer) 4 127.0.0.1:6379> incrbyfloat num 0.7 ##增加浮点数 "4.7" 127.0.0.1:6379> append key " world!" ##append追加字符 (integer) 12 127.0.0.1:6379> get key "hello world!" 127.0.0.1:6379> strlen key ##strlen字符串长度 (integer) 12 127.0.0.1:6379> mget key num ## mget批量获取键值 1) "hello world!" 2) "4.7" 127.0.0.1:6379> mset key hi num 5.5 ##mset批量设置 OK 127.0.0.1:6379> mget key num 1) "hi" 2) "5.5" 127.0.0.1:6379> set foo bar OK 127.0.0.1:6379> getbit foo 1 ##getbit获取某一位二进制数值 (integer) 1 127.0.0.1:6379> setbit foo 22 0 ##设置修改位值 (integer) 1 127.0.0.1:6379> get foo ##修改成功 "bap" 127.0.0.1:6379> set foo bar OK 127.0.0.1:6379> set foo1 aar OK 127.0.0.1:6379> bitop or result foo foo1 ##bitop位操作 (integer) 3 127.0.0.1:6379> get result "car"
127.0.0.1:6379> getset foo hi ##设置新值,返回旧值nil (nil) 127.0.0.1:6379> get foo "hi" 127.0.0.1:6379> setex foo 2 hello ##设置键值对,2秒失效 OK 127.0.0.1:6379> get foo ##没失效时,返回值 "hello" 127.0.0.1:6379> get foo ##失效之后,返回nil (nil) 127.0.0.1:6379> set foo hello OK 127.0.0.1:6379> setrange foo 1 appy ##替换index=1之后的字符串 (integer) 5 127.0.0.1:6379> get foo "happy" 127.0.0.1:6379> setrange foo 1 ee (integer) 5 ##返回修改后的长度 127.0.0.1:6379> get foo ##替换两个字符 "heepy" 127.0.0.1:6379> setrange foo 8 day (integer) 11 127.0.0.1:6379> get foo "heepy\x00\x00\x00day" 127.0.0.1:6379> get bar (nil) 127.0.0.1:6379> setrange bar 2 ee ##bar的值为nil,补充两个0x00 (integer) 4 127.0.0.1:6379> get bar "\x00\x00ee" 127.0.0.1:6379> set key1 hello OK 127.0.0.1:6379> msetnx key1 hi key2 hi ##key2不存在,不修改 (integer) 0 127.0.0.1:6379> mget key1 key2 ## key2依然为nil 1) "hello" 2) (nil) hash
127.0.0.1:6379> HMSET g1class1 xiaoming 001 xiaohong 002 tom 003 hanmeimei 004 OK 127.0.0.1:6379> HGETALL g1class1 1) "xiaoming" 2) "001" 3) "xiaohong" 4) "002" 5) "tom" 6) "003" 7) "hanmeimei" 8) "004" 127.0.0.1:6379> HKEYS g1class1 1) "xiaoming" 2) "xiaohong" 3) "tom" 4) "hanmeimei" 127.0.0.1:6379> HLEN g1class1 (integer) 4 127.0.0.1:6379> HGET g1class1 xiaohong "002" 127.0.0.1:6379> HSET g1class1 lilei 005 ##het新值时,返回1 (integer) 1 127.0.0.1:6379> hset g1class1 xiaohong 007 ## hset更新值时,返回0 (integer) 0 127.0.0.1:6379> hsetnx g1class1 tom 008 ##已存在的值,不操作 (integer) 0 127.0.0.1:6379> hget g1class1 tom ##已存在的值,更新不生效,还是003 "003" 127.0.0.1:6379> hdel g1class1 ##不能直接删除key (error) ERR wrong number of arguments for 'hdel' command 127.0.0.1:6379> DEL g1class1 ##使用DEL删除key (integer) 1 127.0.0.1:6379> hgetall g1class1 ##查询为空 (empty list or set) 用途
listredis列表类型内部是使用双向列表实现的,所以可以向/从两端添加/删除元素。
127.0.0.1:6379> lpush num 1 2 ## 先push 1,再push 2 (integer) 2 127.0.0.1:6379> rpush num 3 4 ##先push 3,再push 4 (integer) 4 127.0.0.1:6379> lrange num 0 -1 ##从0开始,显示4个元素 1) "2" 2) "1" 3) "3" 4) "4" 127.0.0.1:6379> llen num (integer) 4 127.0.0.1:6379> lrange num -1 -2 ##start比end靠右,返回空列表 (empty list or set) 127.0.0.1:6379> lrange num -2 -1 ##从右边第二到右边第一 1) "3" 2) "4" 127.0.0.1:6379> lpush num 3 4 3 (integer) 7 127.0.0.1:6379> lrange num 0 -1 1) "3" 2) "4" 3) "3" 4) "2" 5) "1" 6) "3" 7) "4" 127.0.0.1:6379> lrem num 2 3 (integer) 2 ## 一共删除了两个 127.0.0.1:6379> lrange num 0 -1 1) "4" 2) "2" 3) "1" 4) "3" 5) "4" 127.0.0.1:6379> 127.0.0.1:6379> lrem num 0 4 ##删除所有值为4元素 (integer) 2 ## 一共删除了两个 127.0.0.1:6379> lrange num 0 -1 1) "2" 2) "1" 3) "3" 127.0.0.1:6379> lrem num 2 3 (integer) 1 ##只删除了一个元素 127.0.0.1:6379> lrange num 0 -1 1) "2" 2) "1" 127.0.0.1:6379> lpush num 1 3 (integer) 4 127.0.0.1:6379> linsert num BEFORE 1 4 ##将4插入左边第一个1的前面 (integer) 5 ##插入后,一共有5个元素 127.0.0.1:6379> lrange num 0 -1 1) "3" 2) "4" 3) "1" 4) "2" 5) "1" 127.0.0.1:6379> rpoplpush num num1 ##转移一个元素 "1" 127.0.0.1:6379> lrange num1 0 -1 1) "1" 127.0.0.1:6379> rpoplpush num num1 "2" 127.0.0.1:6379> lrange num1 0 -1 1) "2" 2) "1" 127.0.0.1:6379> lrange num 0 -1 ##num中转移走了2个元素 1) "3" 2) "4" 3) "1" 127.0.0.1:6379> lpushx num 5 ##键名num存在,push成功 (integer) 4 127.0.0.1:6379> lrange num2 0 -1 (empty list or set) 127.0.0.1:6379> lpushx num2 1 ##键名num2不存在,push失败 (integer) 0 127.0.0.1:6379> lrange num2 0 -1 (empty list or set) 用途
setredis的set使用值为空的散列表(hash table)实现。
127.0.0.1:6379> sadd set1 a b ##添加两个不存在的元素 (integer) 2 127.0.0.1:6379> sadd set1 a c ##添加成功一个元素c (integer) 1 127.0.0.1:6379> smembers set1 ##获取所有元素 1) "c" 2) "b" 3) "a" 127.0.0.1:6379> srem set1 d b ##删除成功一个元素 (integer) 1 127.0.0.1:6379> smembers set1 1) "c" 2) "a" 127.0.0.1:6379> sismember set1 a (integer) 1 127.0.0.1:6379> sadd set1 b (integer) 1 127.0.0.1:6379> sadd set2 a d e (integer) 3 127.0.0.1:6379> sadd set3 c h j (integer) 3 127.0.0.1:6379> sdiff set1 set2 set3 ##求差集,在set1中,同时不在set2,set3中的元素 1) "b" 127.0.0.1:6379> scard set1 (integer) 3 127.0.0.1:6379> sdiffstore set4 set1 set2 set3 (integer) 1 127.0.0.1:6379> smembers set4 1) "b" 127.0.0.1:6379> srandmember set1 0 (empty list or set) 127.0.0.1:6379> srandmember set1 1 1) "c" 127.0.0.1:6379> srandmember set1 2 1) "a" 2) "b" 127.0.0.1:6379> srandmember set1 5 ##返回min(5, 3)个元素,且不重复 1) "c" 2) "a" 3) "b" 127.0.0.1:6379> srandmember set1 -5 ## 返回5个元素,可能重复 1) "a" 2) "b" 3) "c" 4) "c" 5) "c" 127.0.0.1:6379> spop set1 "c" 127.0.0.1:6379> smembers set1 1) "b" 2) "a" 127.0.0.1:6379> smembers set2 1) "d" 2) "a" 3) "e" 127.0.0.1:6379> smove set2 set1 c ##source中不含移动的元素,不操作 (integer) 0 127.0.0.1:6379> smove set2 set1 e ##移动一个元素到另一个集合 (integer) 1 127.0.0.1:6379> smembers set2 1) "d" 2) "a" 127.0.0.1:6379> smembers set1 1) "b" 2) "a" 3) "e" 用途
sorted set有序集合为每一个元素关联一个分数,并按照分数进行排序。 虽然集合中的每个元素都是不相同的,但是它们的分数却可以相同。
127.0.0.1:6379> zadd zset1 10 sh 40 bj ##添加2个元素 (integer) 2 127.0.0.1:6379> zadd zset1 20 sh 50 hz 80 cd ##更新1个,添加2个 (integer) 2 127.0.0.1:6379> zscore zset1 sh ##获取sh的分数,已更新为20 "20" 127.0.0.1:6379> zrange zset1 1 -1 ##从第二个元素开始的所有元素 1) "bj" 2) "hz" 3) "cd" 127.0.0.1:6379> zrange zset1 0 -1 withscores ##获取全部元素 1) "sh" 2) "20" 3) "bj" 4) "40" 5) "hz" 6) "50" 7) "cd" 8) "80" 127.0.0.1:6379> zadd zset1 inf zy ##添加正无穷 (integer) 1 127.0.0.1:6379> zrangebyscore zset1 (50 inf withscores ## 分数大于50的元素 1) "cd" 2) "80" 3) "zy" 4) "inf" 127.0.0.1:6379> zrangebyscore zset1 50 inf withscores limit 1 2 ## 分数大于等于50的元素,从第二个开始,取2个 1) "cd" 2) "80" 3) "zy" 4) "inf" 127.0.0.1:6379> zincrby zset1 5 hz ## 给元素hz加5分 "55" 127.0.0.1:6379> zrangebyscore zset1 (50 inf ## 添加成功 1) "hz" 2) "cd" 3) "zy" 127.0.0.1:6379> zrange zset1 0 -1 WITHSCORES ##查询所有元素 1) "sh" 2) "20" 3) "bj" 4) "40" 5) "hz" 6) "55" 7) "cd" 8) "80" 9) "zy" 10) "inf" 127.0.0.1:6379> zcount zset1 0 inf ##获取元素个数 (integer) 5 127.0.0.1:6379> zcount zset1 (55 inf ##大于55元素个数 (integer) 2 127.0.0.1:6379> zrem zset1 zy ##删除zy (integer) 1 127.0.0.1:6379> zrange zset1 0 -1 ## 剩下四个 1) "sh" 2) "bj" 3) "hz" 4) "cd" 127.0.0.1:6379> zremrangebyrank zset1 1 2 ## 按照排名,删除第2名到第3名 (integer) 2 127.0.0.1:6379> zrange zset1 0 -1 ## 只剩下2个 1) "sh" 2) "cd" 127.0.0.1:6379> zadd zs1 1 a 2 b (integer) 2 127.0.0.1:6379> zadd zs2 10 a 20 b (integer) 2 ## zs1和zs2取交集,zs1的权重为1,zs2的权重为0.5,所以a的结果分数是1+10*0.5=6 127.0.0.1:6379> zinterstore zs3 2 zs1 zs2 WEIGHTS 1 0.5 AGGREGATE sum (integer) 2 127.0.0.1:6379> zrange zs3 0 -1 withscores 1) "a" 2) "6" 3) "b" 4) "12" 用途
与列表的比较
更多关于redis基本类型和使用方法请点击下面的相关链接 |
请发表评论