【Redis】Redis的使用

因为之前用的文本文档作的笔记,这次是将其记录在博客上,所以只能以代码的形式规范格式了,各位看官见谅。 --------来了,小老弟

一、String类型操作

赋值操作:
    set key value  如果给key再次赋值,新值会覆盖原值
取值操作:
    get key        无该键,返回(nil)
删除操作:
    del key        返回值为 integer(1),表示删除了一条值
    如果无法删值,可能是因为强制关闭redis快照导致不能持久化,处理办法
    config set stop-writes-on-bgsave-error no
取值并赋值:
    getset key value 先取值,再赋值
自增
    incr key   incr一个不存在的值,redis会自己创建一个键,并设置其值为0
    incrby key step  增加固定长度
自减
    decr key   decr一个不存在的值,redis会自己创建一个键,并设置其值为0
    decrby key step  减少固定长度
拼接字符串
    append key value  key不存在,系统会自动创建空字符串
    127.0.0.1:6379> append password 123
    (integer) 3        //表明该字符串长度为3
    127.0.0.1:6379> append password 456
    (integer) 6        //表明该字符串长度为6

*自增自减只能对数字进行操作,字符串如果为字母,不能进行该操作

二、Hash类型操作

赋值:
    1.设置一个字段 
    hset key field value

    127.0.0.1:6379> hset hash1 uname zhangsan
    (integer) 1
    127.0.0.1:6379> hset hash1 uname lisi
    (integer) 0
    *再次设置无效

    2.设置多个字段
    hmset key field value [field2 value2] [field3 value3]

    127.0.0.1:6379> hmset hash2 uname zhangsan age 18 sex man 

取值:
    1.取出单个值

    127.0.0.1:6379> hget hash2 uname

    2.取出多个值

    127.0.0.1:6379> hmget hash2 uname age
    1) "zhangsan"
    2) "18"

    3.取出所有字段名和值
    127.0.0.1:6379> hgetall hash2
    1) "uname"
    2) "zhangsan"
    3) "age"
    4) "18"
    5) "sex"
    6) "man"

删除:
    1.hdel key field
    如果key中删除完无字段时,整个键值对会被删除
    127.0.0.1:6379> hdel hash1 uname
    (integer) 1
    
    2.删除整个哈希值
    del key

增加数字
    127.0.0.1:6379> hmset hash1 uname zhangsan age 18
    OK
    127.0.0.1:6379> hincrby hash1 age 10
    (integer) 28
    
判断字段是否存在
    127.0.0.1:6379> hexists hash1 uname
    (integer) 1
    127.0.0.1:6379> hexists hash1 u
    (integer) 0

查询字段数量
    127.0.0.1:6379> hlen hash1
    (integer) 2

获得所有字段  获取所有value
    127.0.0.1:6379> hkeys hash1
    1) "uname"
    2) "age"
    127.0.0.1:6379> hvals hash1
    1) "zhangsan"
    2) "28"

三、List类型操作:

1.做大数据集合的增删
2.任务队列

赋值:
    lpush key values[value1, value2, ...]:从左侧开始添加元素
    rpush key values[value1, value2, ...]:从右侧开始添加元素
取值:
    lrange key start stop: 从start开始取到stop,start、stop值也可以为附属,-1则表示链表尾部的元素
    *查询所有元素 lrange key 0 -1
    127.0.0.1:6379> lrange list1 0 3
    1) "d"
    2) "c"
    3) "b"
    4) "a"
    127.0.0.1:6379> lrange list1 0 -1
    1) "d"
    2) "c"
    3) "b"
    4) "a"
删除值:
    lpop key :删除第一个元素
    rpop key :删除最后的元素
    *链表元素被删除完时,整个键值对也会被删除,redis不允许空集现象存在
获取元素个数:
    llen key :返回元素个数
删除某种元素:
    lrem key count value :删除count个值为value的元素,count为正数,从头到尾删除,如果count为负数,从尾到头删除,一般不建议使用该命令,因为                                   效率极低
    127.0.0.1:6379> rpush list3 a b c a b c a b
    (integer) 8
    127.0.0.1:6379> lrem list3 0 a
    (integer) 3
    127.0.0.1:6379> lrange list3 0 -1
    1) "b"
    2) "c"
    3) "b"
    4) "c"
    5) "b"
替换操作(效率极低):
    127.0.0.1:6379> rpush list3 a b c a b c a b
    (integer) 8
    127.0.0.1:6379> lset list3 2 aaaaaa
    OK
    127.0.0.1:6379> lrange list3 0 -1
    1) "a"
    2) "b"
    3) "aaaaaa"
    4) "a"
    5) "b"
    6) "c"
    7) "a"
    8) "b"
在索引前\后插入元素(效率极低):
    linsert key BEFORE|AFTER pivot value

    127.0.0.1:6379> linsert list3 before aaaaaa cccccc
    (integer) 9
    127.0.0.1:6379> lrange list3 0 -1
    1) "a"
    2) "b"
    3) "cccccc"
    4) "aaaaaa"
    5) "a"
    6) "b"
    7) "c"
    8) "a"
    9) "b"

*rpoplpush resource destination(用做任务队列):
    127.0.0.1:6379> RPUSH list1 a b c d
    (integer) 4
    127.0.0.1:6379> RPOPLPUSH list1 list2
    "d"
    127.0.0.1:6379> LRANGE list1 0 -1
    1) "a"
    2) "b"
    3) "c"
    127.0.0.1:6379> LRANGE list2 0 -1
    1) "d"
循环列表:
    127.0.0.1:6379> RPUSH list1 a b c d
    (integer) 4
    127.0.0.1:6379> RPOPLPUSH list1 list1
    "d"
    127.0.0.1:6379> RPOPLPUSH list1 list1
    "c"
    127.0.0.1:6379> LRANGE list1 0 -1
    1) "c"
    2) "d"
    3) "a"
    4) "b"

四、Set类型操作:

    set特点:有序不重复
    涉及两个大数据集合的并集、交集、差集操作
赋值:
    sadd key member [member ...]

    127.0.0.1:6379> sadd set1 a b  c d a
    (integer) 4(不能重复)
    
删除:
    SREM key member [member ...]

    127.0.0.1:6379> SREM set1 b d
    (integer) 2

取值:
    SMEMBERS key
    
    127.0.0.1:6379> SMEMBERS set1
    1) "a"
    2) "c"

判断是否存在某元素:
    SISMEMBER key member

    127.0.0.1:6379> SISMEMBER set1 a
    (integer) 1
    127.0.0.1:6379> SISMEMBER set1 aaa
    (integer) 0

差集运算:
    127.0.0.1:6379> SADD set1 a b c d
    (integer) 4
    127.0.0.1:6379> SADD set2 b e
    (integer) 2
    127.0.0.1:6379> SDIFF set1 set2 (属于set1,不属于set2)
    1) "a"
    2) "c"
    3) "d"
交集运算:
    127.0.0.1:6379> SINTER set1 set2 (set1,set2无顺序)
    1) "b"
并集运算:
    127.0.0.1:6379> SUNION set1 set2
    1) "c"
    2) "d"
    3) "b"
    4) "a"
    5) "e"
* 将交并补运算结果存储进destination
    SDIFFSTORE destination key [key ...]
    SINTERSTORE destination key [key ...]
    SUNIONSTORE destination key [key ...]
    
    127.0.0.1:6379> SUNIONSTORE set3 set1 set2
    (integer) 5
    127.0.0.1:6379> SMEMBERS set3
    1) "c"
    2) "d"
    3) "b"
    4) "a"
    5) "e"


获取set成员数量:
    SCARD key

    127.0.0.1:6379> SCARD set1
    (integer) 4
随机返回set中的成员:
    SRANDMEMBER key

    127.0.0.1:6379> SRANDMEMBER set1
    "c"

五、有序set: 有序set集合操作,多用于排行榜、微博热搜等

赋值:ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
     zadd set1 5000 xiaoming 1000 xiaohong 500 xiaozhang
取值:ZSCORE key member
    127.0.0.1:6379> ZSCORE set1 xiaoming
    "5000"
获取集合中元素个数:ZCARD key
    127.0.0.1:6379> ZCARD set1
    (integer) 3
删除元素:ZREM key member [member ...]
    127.0.0.1:6379> ZREM set1 xiaoming xiaohong
    (integer) 2
范围查询:ZRANGE key start stop [WITHSCORES] 从小到大
   
    127.0.0.1:6379> ZRANGE set1 0 -1
    1) "xiaozhang"
    2) "xiaohong"
    3) "xiaoming"

    127.0.0.1:6379> ZRANGE set1 0 -1 WITHSCORES
    1) "xiaozhang"
    2) "500"
    3) "xiaohong"
    4) "1000"
    5) "xiaoming"
    6) "5000"

*ZREVRANGE key start stop [WITHSCORES] 从大到小

按照排名范围进行删除:ZREMRANGEBYRANK key start stop
按照分数范围进行删除:ZREMRANGEBYSCORE key min max
按照范围进行排名(可以加限制):ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
给元素增加分数:ZINCRBY key increment member
计算分数段之间的成员数:ZCOUNT key min max
查询排名:
    ZRANK key member
    ZREVRANK key member

六、通用命令:

    keys pattern:获取所有与pattern匹配的key,返回所有与该
    通配符:*  ? 

    127.0.0.1:6379>  keys *name*
    1) "username"
    2) "name"
    127.0.0.1:6379>  keys ????
    1) "name"

    
    del key1 key2...: 删除多个键
    exists key :判断key值是否存在,返回1,存在,返回0,不存在
    rename key newkey :为当前key重新命名
    type key :获取key的值类型
    expire key seconds :设置key的生存时间(单位为s)
    ttl key :查看key还剩多长生存时间,key过期了,redis会将其删除
    *未设置过期时间,永久的键值,其生存时间为-1

消息订阅与发布:
    SUBSCRIBE channel [channel ...]
    PSUBSCRIBE pattern [pattern ...]
    PUBLISH channel message
    
多数据库:
    redis默认有16个数据库, 0 1 2 ...... 15
    默认操作发生在0号数据库中
    
    切换数据库: select 数据库名
    127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> select 2
    OK
    数据库和数据库之间不能共享键值对

    把某个键值对进行数据库的移植:move key db
    
    慎用:
    清空当前数据库: flushdb
    清空服务器所有数据库: flushall

七、事务: 为了进行redis语句的批量化执行

    multi: 开启事务用于标记事务的开始,其后执行的命令都将被存入命令队列,直到执行exec时,这些命令才会被原子的执行,类似于关系数据库中的begin transcation
    exec: 提交事务,类似于关系数据库中的commit          批量化执行
    discard: 事务回滚,类似于关系数据库中的rollback    不执行操作

    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set username zhangsan
    QUEUED
    127.0.0.1:6379> get username
    QUEUED
    127.0.0.1:6379> exec
    1) OK
    2) "zhangsan"
    127.0.0.1:6379> multi
    OK
    127.0.0.1:6379> set password 123
    QUEUED
    127.0.0.1:6379> get password 
    QUEUED
    127.0.0.1:6379> discard
    OK

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值