redis
- 用户量增大,请求数量增大数据压力大。多台服务器锁,不互斥。数据不同步。
- redis是基于内存存储和读取数据的。接受请求是单线程的(相当于锁了,可以把共享数据放在redis里面)
- Nosql是非关系型数据库,redis就是nosql(key-value)
redis常用命令
- redis存储数据的结构:常用的5种
- key-string(一个值):最常用,用于存储一个值
- key-hash(一个map):存储一个对象数据
- key-list(列表,有序,即按照存入顺序排序,允许重复):使用list结构实现栈和队列结构
- key-set(无序,他会自己再排个序,不允许重复):交集,差集,并集的操作
-
key-zset(一个有序的不允许重复集合):排行榜,积分存储等操作
string常用命令
- 添加值: set key value
- 取值: get key
- 批量:mset key value [key value.....] mget key [key.....]
- 自增: incr key(自增1) 点赞功能
- 自减: decr key(-1)
-
自增或自减指定数量: incrby key increment; decrby key increment
- 设置值的同时,指定生存空间:setex key second value(每次向redis中添加数据时,尽量都设置上生存时间)
- 设置值,如果当前key不存在的话,什么事都不做。如果key不存在,和set命令一样: zetnx key value
- 在key对应的value后,追加内容:append key value
-
查看value字符串的长度: strlen key
hash常用命令
- 存: hset key field value
- 取: hget key field
-
批量: hmset key field value [field value.....]; hmget key field [field..]
- 自增 指定值: hincrby key field increment (可以是负数)
- 设置值,如果key-field不存在,就添加,存在,就不操作:hsetnx key field value
- 检查field是否存在 : hexists key field
-
删除某一个,多个field:hdel key field[field....]
- 获取全部 :hgetall key
- 获取全部field: hkeys key
- 获取全部value: hvals key
-
获取当前hash结构中field的数量: hlen key
list常用命令
- 存:(从左侧)lpsuh key value[value....]; (右侧插入)rpush key value[value...]
- 存(如果key不存在,什么都不做。如果key存在,但是不是list结构,什么都不做): lpushx key value; rpushx key value
-
存(指定索引):lset key index value
- 获取数据,弹栈,数据会移除(左侧,右侧):lpop key; rpop key
- 获取指定索引范围的数据(start从0开始,stop,输入-1是最后一个,-2是倒数第二个): lrange key start stop
- 获取指定索引位置的数据: lindex key index
-
获取长度:lline key
- 删除列表中的数据(删除的是当前list中的count个value值,count大于0是左侧从右侧删除,count小于0,是从右边开始删, count等于0,是删除全部value):lrem key count value
- 保留列表中的数据(指定范围,超出范围的数据都会被移除):ltrim key start stop
set常用命令
- 存储数据: sadd key member [member....]
-
获取数据 : (全部数据)smembers key ;(随机获取一个数据):spop key [count] (count默认为1)(获取的同时,会移除数据)
- 交集: sinter set1 set2 ....
-
并集: sunion set1 set2....
-差集: (获取多个集合中不一样的数据) sdiff set1 set2 ....
- 删除数据: srem key member[member...]
-
查看是否包含: sismember key member
zset常用命令
- 添加: zadd key score member [score member...] (score必须是数值,member不允许重复)
- 修改member分数: zincrby key increment member(如果member存在于key,则正常添加分数。如果member不存在,就相当于zadd)
- 查询指定member的分数:zscore key member
- 获取zset中数据的数量: zcard key
- 查询一定分数范围的数量: zcount key min max
-
删除zset中的成员:zrem key member[member...]
- 根据分数,从小到大,获取指定范围的数据:zrange key start stop [withscores] (如果withscores添加了,会反胃member的具体分数,不加就不返回分数)
- 根据分数排序 从大到小排序:zrevrange key start stop [withscores]
- 根据分数的返回获取数据:zrangescore key min max[withscores]