ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
### string 字符串 string是最简单的类型,可以理解成与Memcached一样的类型,一个key对应一个value,其上支持的操作与Memcached的操作类似,它的功能更丰富,可以存二进制的对象。 ~~~ set key value [EX seconds] [PX milliseconds] [NX|XX] --> get value #设置单个string,若值已经存在,则覆盖 mset key1 value ...--> mget key1 key2 ... #设置多个string,若值已经存在,则覆盖 setnx key value --> get key value #当键的值为空时,才能设置成功;否则设置失败 setex key timeout value --> ttl key #设置value超时时间 APPEND key value #追加值 DECR key DECRBY key decrement INCR key INCRBY key increment STRLEN key ~~~ ### list链表 消息队列 list是一个链表结构,主要功能是push、pop、获取一个范围的所有值等。操作中key理解为链表的名字。使用 List 结构,我们可以轻松地实现最新消息排行等功能(比如新浪微博的 TimeLine )。 list 的另一个应用就是消息队列,可以利用 list的push操作,将任务存在list中,然后工作线程再用pop操作将任务取出进行执行。 ![](http://i1.piimg.com/588926/caeead324d0cf95c.png) ~~~ lpush lista a #从左侧压入一个元素a lpop lista #从左侧取出 rpush lista 1 #从右侧压入一个元素1 rpop lista #从右侧取第一个元素 lrange lista 0 -1 #0为头,-1为尾 linsert lista before 2 3 #在2的前面插入一个元素为3 lset lista 4 bbb #把第5个元素修改为bbb lindex lista 0 #查看第1个元素 llen lista #查看链表中有几个元素 ~~~ 3 set集合 共同的关注、爱好,提供了交集、并集、差集 ~~~ sadd key value1 value2 ... #添加元素 srem key value1 value2 ... #删除元素 spop key #从集合key中随机取出一个元素,并删除 srandmember key #从集合key中随机取出一个元素。并不删除 smembers key #显示集合 ~~~ ~~~ 差集 # sdiff seta setb 从集合seta中除去seta和setb的交集 # sdiffstore setc seta setb 从集合seta中除去seta和setb的交集,保存至setc 交集 # sinter seta setb 集合seta和setb的交集 # sinterstore setc seta setb 集合seta和setb的交集,保存至setc 并集 # sunion seta setb 集合seta和setb的并集 # sunionstore setc seta setb 集合seta和setb的并集,保存至setc 查看集合中是否有某个元素 sismember seta value ~~~ 4 sorted set有序集合 ~~~ zadd zseta 11 123 #创建有序集合 zrange zseta 0 -1 [withscores] #显示所有元素,按顺序显示,可以带上分值 zrem zseta 222 #删除指定元素 zrank zseta 222 #返回元素的索引值,索引值从0开始,按score正向排序 zrevrank zseta 222 #同上,不同的是,按score反序排序 zrevrange zseta 0 -1 #反序显示所有元素,并带分值 zcard zseta #返回集合中所有元素的个数 zcount zseta 1 10 #返回分值范围1-10的元素个数 zrangebyscore zseta 1 10 #返回分值范围1-10的元素 zremrangebyrank zseta 0 2 #删除索引范围0-2的元素,按score正向排序 zremrangebyscore zseta 1 10 #删除分值范围1-10的元素 ~~~ ### hash 在Memcached中,我们经常将一些结构化的信息打包成hashmap,在客户端序列化后存储为一个字符串的值(一般是 JSON 格式),比如用户的昵称、年龄、性别、积分等。 将多个value存到一个hash中。 ~~~ 单存 hset hash1 name hiyang hset hash1 id 2 hset hash1 gender M 批存 hmset hash1 name xiaowang age 20 gender F id 10 单取 hget hash1 name 批取 hgetall hash1 # 所有 hmget hash name age #取部分 取所有值value hkeys hash1 取所有值value hvals hash1 删除 hdel hash1 name 查看hash的field数量 hlen hash1 ~~~ ### redis键值操作 ~~~ keys key*使用通配 exists key1 key1是否存在 del key 删除key expire zset 10 设置过期时间 ttl key #查看键还有多长时间过期,单位是s,当key不存在时,返回 -2。 当key存在但没有设置剩余生存时间时,返回-1 。 否则,返回key的剩余生存时间。 select 0 #代表选择当前数据库,默认进入0 数据库 move age 1 #把zset1移动到数据库1 persist key1 #取消key1的过期时间 randomkey #随机返回一个key rename oldname newname #重命名key type key1 #返回键的类型 dbsize #返回当前数据库中key的数目 info #返回redis数据库状态信息 flushdb #清空当前数据库中所有的键 flushall #清空所有数据库中的所有的key ~~~