第一、二章 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超出偏移量会自动分配内存,要考虑空间

redis Bucket指令 redis基本指令_redis

散列类型

  • 赋值与取值 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

redis Bucket指令 redis基本指令_redis_02

  • 获取或设置指定索引的值 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

redis Bucket指令 redis基本指令_redis_03

  • 获取集合内元素个数 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]

redis Bucket指令 redis基本指令_redis Bucket指令_04