Redis常用命令

一、不常用但实用的命令
1string
  set、mset、append (向某个key的字段后面追加)、get、mget、
  getset、expire、exists

2、hash
    hset、hmset、hsetnx、hget、hmget(获取多个)、hgetall、
    hdel、hexists、hincrby

3、list列表
    lpush、rpush、lpop、rpop、len、lrange、lindex(获取某个索引下的值)、
    lset(s索引插入值),lrem(删除某个值),ltrim(类似Php的slice一样,只保留那几个)
    lrem EG:
        //从左边开始删,删除3个等于2的
        lrem testlistkey 3 2 
        //从右边开始删,删除3个等于2的
        lrem testlistkey -3 2
        //删除所有等于2的
        lrem testlistkey 0  2
    ltrim:
        //testlistkey : [a,f,v,c]
        ltrim testlistkey 1,2 //testlistkey : [f,v]


4set无序集合
    sadd、srem、smembers、scard、spop、sismeber(判断是否存在)、srandmember、sdiff、sinter、sunion、sdiffstore、sinterstore、sunionstore
    srandmember(随机获取,获取后还在集合中,与spop不一样):
        srandmember key //随机去一个
        srandmember key  2//随机去2个,不会重复
        srandmember key -2 //随机去2个,可能会重复
        【注意】:随机不是那么均匀


5、zset有序集合常用操作:
    zadd(添加)、zrem(删除)、zrange(集合列表,limit分页)、zcard(获集合数量)、zscore(获取集合中某个value的score)

    【范围操作】:
    zrangebyscore、zrevrangebyscore(取指定范围值):
    //score大于15的,从第2条开始取取2条
    zrangebyscore wokaocaca 15 +inf  limit 1 2
    //score小于等于15的,从第2条开始取取2条
    zrevrangebyscore wokaocaca 15 0 limit 1 2
    //获取score在某个范围内的数量
    zcount wokaocaca 10 20 //大于等于10,小于等于20
    zcount wokaocaca 10 +inf //大于等于10 
    zcount wokaocaca (10 +inf //大于10
    //删除索引为0,1,2的
    zremrangebyrank  wokaocaca 0 2
    //删除分数大于等于39,小鱼等于56的
    zremrangebyscore wokaocaca 39 56
    //排名,wo在wokaocaca排名第几(默认0,第一名)
    zrank wokaocaca wo   //由小到大
    zrevrank wokaocaca wo   //由大到小

    【自增】
    zincrby(增加某个key下的value对应的score):
    sam 15分已经存在集合wocca中,对他增加5分:
    zincrby wocaca 5 sam  //sam 20


6、事务
6.1 redis事务不会提供回滚机智,redis官方认为,redis在线上代码
    中不应该出现一个事务的代码在执行一半会失败,他们认为造成会一
    个事务的代码在执行一半会失败只有2个原因:
    1)语法错误,这种在开发测试期间就会排查出来
    2)运行错误,操作执行了不属于自己类型的key,比如testkey原本
    存的string类型,却被lpop执行了该key,对于这种问题,在定义
    key的时候统一规则
    由于不提供事务回滚,redis在性能是提高了

    eg:
    Multi
    set key1 value1
    sadd key2 value2
    exec

6.2 watch
    除了setnx、hsetnx也可以通过watch实现竞态操作导致数据错乱问
    题,watch了一个key后,后续如果发现这个key有改变,那watch之
    后的事务是不会执行的

7、时效性
    expire(单位秒)/pexpire(单位毫秒)  ttl/pttl(返回还剩多久)、persist(将时效性的key-value转化为永久)
    watch检测一个拥有过期时间的key,该key到期自动删除并不会被watch命令认为该键改变

8、redis做缓存,不需要设置缓存时间
    做缓存设置,修改配置文件的maxmemory,限制redis最大可用内存大小(单位是字节),当超出这个限制的时候,redis会依据maxmemory-policy参数指定的策略来删除不需要的键知道redis占用内存小于指定内存。(搜索redis淘汰键规则,allkeys-lru就是超过内存就会删除使用最少的)

9sort
    除了有序集合zset与list,redis还提供了sortset、zset、list排序。
    sort可以按照字典序(alpha):  sort key alpha
        sort倒序:sort key desc
    sort倒序、分页:sort key desc limit 1 2set集合依赖hash中某个字段排序】
    key1为set集合(213post:1 hash中 title:A time:1111111
    post:2 hash中 title:B time:3333333
    post:3 hash中 title:C time:222222
    按照时间排序:sort key by post:*->time desc
        1) "2"
        2) "3"
        3) "1"

    【list依赖string字段排序】
    list中: [2,1,3]
    string: 
        itemscore:1   50
        itemscore:2   100
        itemscore:3  -10
    127.0.0.1:6379> sort ll by po:* desc
        1) "2"
        2) "1"
        3) "3"


10、 brpop、blpop如果循环取队列数据,在一个while(true)中执行
并且队列为空的时候,会阻塞,不像rpop、lpop,知道队列有数据会立马
取出来

11、发布/订阅
subscribe channel1.0  //订阅1个频道
publish channel1.0 hi //向频道发布消息
psubscribe channel.?* //订阅多个频道


12、优化redis性能
    12.1 通过管道,减少多条命令直接往返耽误的时间
    12.2 节省空间
        12.2.1 key、value的长度
        12.2.2 内部编码的优化(待研究)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值