第一、二章 redis入门与准备
大概阐述一下五种基本类型,分别是散列,列表,集合,字符串,有序集合
redis-server 启动redis redis-server --port 3306 自定义端口
redis-cli shutdown 关闭redis,并且正常持久化
一些基本的配置信息,包括开机设置等值得参考一下。
redis数据库可以通过 select 1
第三章入门
字符串类型
- 获得符合规则的简明键名列表 keys pattern ,pattern是符合glog的正则匹配,包括了四种,?表示匹配任意一个字符,*表示任意(0)个字符,[]字符范围,\x转义字符。keys指令需要遍历所有的键名所以效率比较低,数量多影响性能,不建议生产环境使用。
- 判断一个键是否存在 exists key
- 删除键 del key [key ...] ,删除不支持正则表达式,所以可以利用管道还有xargs命令, redis-cli keys "user:*" | xargs 或者是 redis cli `redis keys "user:*"`
- 获取键值类型 type key ,返回值有五种类型 string,hash,list,set,zset
- 赋值与取值 set key value 和 get key
- 递增数字 incr key
- 键值的取值一般为 对象类型:对象ID:对象属性
- 增加指定整数 incrby key increment redis>incrby id
- 减少指定整数 decr key decrby key decrement
- 增加指定浮点数 incrbyfloat key increment
- 向尾部追加值 append key value
- 获取字符串长度 strlen key
- 同时获得或者设置多个键值 mget key [key ...] , mset key value [key value ...]
- 位操作 ,偏移量都是从0开始
- getbit key offset 获取键值在指定offset的位置,如果超出则为0
- setbit key offse value 设置键值指定offset,设置超过可到达长度会在中间补全0
- bitcount key [start] [end] 获取key中有多少个1,start和end的单位是字节,取值范围是闭区间
- bitop operation destkey key [key...] 对key值进行操作结果放在destkey中,有and or xor not
- bitpos key bit [start] [end] 获取第一个1的偏移量,start和end的单位是字节,取值范围是闭区间,此时偏移量从头开始和起始字节无关
如果键值所有二进制都为1,查询0的偏移位置会定位到该值的下一位,因为redis认为键值长度后面全是0
setbit指令如果bit超出偏移量会自动分配内存,要考虑空间
散列类型
- 赋值与取值 hset key field value [field value ...] hget key field [field ...] hgetall key ,对于set来说如果是插入操作返回1,如果是更新操作返回0。hgetall返回的形式是列表样式
- 判断字段是否存在 hexists key field
- 当字段不存在时赋值 hsetnx key field value 原子操作,成功返回1,否则返回0
- 增加数字 hincrby key field increment
- 删除字段 hdel key field [field...]
- 只获取字段名或者字段值 hkeys key hvas key
- 获取字段的数量 hlen key
列表类型
- 向列表两端插入值 lpush key value [value ...] rpush key value [value ...]
- 从列表两端弹出值 lpop key rpop key
- 获取列表的个数 llen key时间复杂度是O(1),有现成存储值
- 获取列表的片段 lrange key start stop
- 删除列表指定的值 lrem key count value
- 获取或设置指定索引的值 lindex key index lset key index value
- 只保留列表的指定片段 ltrim key start end
- 向列表的指定值左右插入新值 linsert key before|after pivot value
- rpoplpush source destination
集合类型
在redis内部是是使值为空的散列表来实现的,所以集合内所有的元素都不会相同
- 增加/删除元素 sadd key member [member ...] srem key member [member ...]
- 获取所有的元素的值 smembers key
- 是否存在该元素 sismember key member
- 集合间的运算
- 差集运算sdiff key [key ...]
- 交集运算sinter key [key ...]
- 并集运算sunion key [key ...]
- 获取集合内元素的个数 scard key
- 进行集合运算另存为 sdiffstore distination key [key ...]
- 随机获取集合内的某一个元素 srandmember key [count] 如果count是正数,则取出count个不重复的的元素,同时这个count大于能取出的就取出最多的,如果count是负数,则取出count个可能重复的的元素,取出的规则是随机hash到哪个桶再随机从hash冲突链中获取。所以如果桶中只有一个元素那么概率比桶中有多个元素高
- 随机的从集合中删除一个元素 spop key
有序集合
是在集合的基础上加上了分数,存储结构有散列类型或者跳跃表
- 增加元素 zadd key score member [score member ...]
- 删除元素 zrem key member [member ...]
- 获得元素的分数 zscore key member
- 获得排名在某个范围内的元素列表 srange key start end [withscores] srevrange key start end [withscores]
- 获得指定分数范围的元素 zrangebyscore key min max [withscores] [limit offset count]
- 增加某个元素的分数 zincrby key increment member
- 获取集合内元素个数 zcard key
- 获取指定分数范围元素个数 zcount key min max
- 按照排名删除元素 zremrangebyrank key start end
- 按照分数删除元素 zremrangebyscore key min max
- 计算有序集合的交集 zinterstore destination numkeys key [key ...] [weights weight ...] [aggregate sum|min|max]