Redis支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)
Redis 的命令不区分大小写,但是 key 严格区分大小写!!!
90%的人就只会使用String类型!这是一种悲哀!
基础
#获取字符串长度 strlen key #追加字符串,如果不存在就自动新建 append key value #检查是否存在 exist key #设置 set key value #得到 get key #先获取旧值,再设置新值,没有旧值就为空(nil) getset key value #删除 del key
浏览量自增
set views 0 #加一 incr views #加特定步长 incrby views 10 #减一 decr views #减特定步长 decyby views 8
字符串截取与替换
set study "Hello,Redis" #字符串截取[0,5] getrange study 0 5 #截取全部的字符串 getrange study 0 -1 #替换后面的字符串,从的七个字符串开始替换 setrange study 6 "I am study Redis"
存在相关设置
#设置存在时间 setex key seconds value #查看存在时间 ttl key #不存在才赋值 setnx key value
批量设置与获取
#批量设置 mset k1 v1 k2 v2 k3 v3 #批量获取 mget k1 k2 k3 #同时他是原子性操作,要么都失败要么都成功! msetnx k1 v k4 v4 >false
同时你可以设置对象
#但其实也没啥特殊的,:也没什么特殊的,只是一种软规定罢了 mset user:1:name zheng user:1:age 21 mget user:1:name zheng user:1:age 21
用途
在Redis里面我们可以把list玩成 栈,队列,阻塞队列
有序可重复
list的数据结构:https://cloud.tencent.com/developer/article/1710612
List是Redis自己实现的双向链表,可以两个方向进行添加访问
除了上面这两种指令之外
查看节点(查)
#查看所有节点 lrange mylist 0 -1 #查看指定节点 lrange mylist 0 2 #查看指定下标的节点 lindex mylist 1 #查看总长度 llen mylist
移除(删)
lrem key count value #lrem mylist 1 one #从前往后移除一个mylist中的one元素
截取
ltrim mylist 1 2
移动旧元素到新List
rpoplpush oldlist newlist
更新(改)
lset mylist 0 newnode #把原先的0位置的元素变为新的元素,如果原下标没有元素就会报错
插入(增)
#在mylist中的one元素前面插入zero这个元素 linsert mylist before one zero #在mylist中的one元素后面插入two这个元素 linsert mylist after one two
用途
无序不重复
基础操作
#添加 sadd myset hello sadd myset world sadd myset redis #查看全部,但他是无序的 smembers myset #查看是否存在 sismember myset java >0没有 1有 #获取个数 scard myset #移除,myset中的hello元素 srem myset hello
随机
#随机获取,可加个数 srandmember myset (count) #随机删除,可加个数 spop myset (count)
移动
#移动hello元素从oldset到newset smove oldset newset hello
集(例如:共同关注)
#差集 sdiff set1 set2 #交集 sinter set1 set2 #并集 sunion set1 set2
用途
Map集合
其本质就是在String的基础上套了一层
hget hset hmset hmget hsetex hsetnx hexist ……这些方法hash基本上都有
#查看所有 hgetall myhash #查看所有key hkeys myhash #查看所有的value hvals myhash
用途:
就是在set的基础上增加了score,方便排序
#添加 zadd salary 2500 zheng zadd salary 3000 liao zadd salary 5000 huang #删除 zrem salary yuan #查看 zrange salary 0 1 #查看第一个到第二个的元素 zrevrange salary 0 1 #查看倒序后的第一个到第二个元素 #通过score来排序,可以是否带有score这个参数,key用 -inf +inf 查看 zrangebyscore salary 0 3000 (withscores) #查看score在[0,3000]范围的元素 ##通过score倒序来排序,可以是否带有score这个参数,key用 +inf -inf 查看 zrevrangebyscore salary 0 3000 #查看个数 zcard salary #获得指定score区间的个数 count salary 0 3000 > 2
用途: