redis(docker)学习、操作(1)--五大基础类型--持续更新

    技术2022-08-16  98

    通过linux命令行操作redis数据库

    1 docker exec -i -t 容器id /bin/bash 2 redis-cli 3 操作前缀变为127.0.0.1:6379>即进入redis数据库
    常用redis命令:
    清除当前数据库: flushdb 清除全部数据库内容: flushall 切换数据库: select 数据库序号 select 3切换到3号数据库 查看DB大小: DBSIZE 查看数据库所有key: keys * 插入key: set name zs zs==>value 查询内容是否存在: EXISTS name 移动key: move name 1 name===>key 1==>移动目标数据库 移除内容: del name 过期时间: EXPIRE name time(s) ----可通过ttl name查看剩余销毁时间 查看key类型: type name

    linux自动补全快捷键:TAB,后期可通过自动补全查看相关内容

    遇到不会的命令查看官网帮助文档 http://www.redis.cn/commands.html

    Redis可用作数据库、缓存和消息中间件MQ

    Redis类型使用操作:

    1、 String(字符串)

    字符串长度: strlen key 追加字符串:append key value 对数据+1操作:incr key 对数据-1操作 :decr key 对数据+n操作:incrby key n 对数据-n操作:decrby key n 字符串start-end区间内容:getrange key start end ==>查看所有字符串 getrange key 0 -1 替换区间内容:setrange key start value 设置过期时间:setex key seconds value 设置过期时间(不存在再设置):setnx key value ===>设置失败返回0,成功返回1(常用于分布式锁) 批量获取批量存入 mset key value [key value ...] ==>mset k1 v1 k2 v2 k3 v3 mget key ... ==>mget k1 k2 k3 msetnx:是原子性操作,一起成功/一起失败 对象 set user:1 {name:zs,age:3} 设置一个user:1对象 值为json保存 也可以 mset user:1:name zs user:1:age 2 user:{id}:{field} ==>id可实现复用 getset ==>先get再set 127.0.0.1:6379> getset db redis 不存在值返回nil (nil) 127.0.0.1:6379> get db "redis" 127.0.0.1:6379> getset db 123 存在值返回原始值并设置新值 "redis" 127.0.0.1:6379> get db "123"

    2、List

    lpush list one 将一个值或者多个值,插入到列表头部(左) lrange list 0 -1 查询列表所有值 rpush list right 将一个值或者多个值,插入到列表尾部(右) Lpop list 移除list的第一个元素 Rpop list 移除list的最后一个元素 lindex list 1 通过下标获得list中的某一个值! 应用:阻塞队列 Llen list 返回列表长度 lrem list 1 one 移除list集合种指定个数的value,精确匹配 lrem list count one 移除list中count个one,count超过one总数将会删除所有one ltrim list 1 2 通过下标截取指定的长度,这个list已经被改变了,只剩下未截取内容! rpoplpush list otherlist || rpoplpush list list 移除列表的最后一个元素,并移动到新的列表otherlist中,可以移动到同一个list中 lset list 0 aa 将列表中指定下标的值替换为另外-一个值,更新操作;列表值不存在更新会报错 **linsert** rpush list "world" linsert list before "world" "aaa"====>字符串一定要一样才能定位 将某个具体的value插入到列中某个元素的前面或者后面

    本质上是个链表,两边插入、改动值效率最高。可用于消息排队,消息队列(Lpush Rpop), 栈(Lpush Lpop)

    3、Set

    set中的值不能重复!!

    sadd set 1 往set里添加元素 smembers set 查看指定set的所有值 sismember set 1 判断某个值在不在set集合中 scard set 获取set集合中内容元素个数 srem set 1 移除set集合中指定元素 srandmember set 随机抽取元素 srandmember set 1 随机抽取指定个数的元素 spop set 随机删除set中的元素 somove set set1 ”1“ 将一个指定的值移动到另一个set集合中 sdiff key1 key2 差集 sinter key1 key2 交集 sunion key1 key2 并集 =====》应用于关注共同用户,共同爱好,推荐好友

    4、Hash

    本质和string类型没有大区别,还是key-value hash适合对象的存储

    hset hash field zs 设置一个具体的key-value hget hash field 查询一个具体的key-value hmset hash f1 aa f2 bb 设置多个具体的key-value,该情况下如果已经存在f1会覆盖f1内容 hmget hash f1 f2 查询多个具体的key-value hgetall hash 获取全部数据 hkeys hash 获取所有的key字段 hvals hash 获取所有的value值 hdel hash field 删除hash指定key字段 hlen hash 获取hash表的字段数量 hexists hash field 判断hash中key字段存在与否 hincrby hash field 1 自增 hincrby hash field -1 自减 hsetnx hash f4 hello 如果不存在则可以设置,存在不能设置==>分布式锁

    5、Zset(有序集合)

    zadd zset 1 one 增加值 zadd salart 2500 a 添加数据 ZRANGEBYSCORE salart -inf +inf 从小到大排序,显示所有用户(inf无穷) zrevrange salart 0 -1 从大到小排序 ZRANGEBYSCORE salart +inf -inf ===> (empty array) ZRANGEBYSCORE salart -inf +inf withscores 附带数据内容的返回 1) "a" 2) "2500" zrem salart a 移除有序集合中的指定元素 zcard salart 获取有序集合中的数据数量 zcount myset 1 2 获取指定区间的成员数量

    案例思路:工资表排序、存储班级成绩表 普通消息 1、重要消息 2、带权重进行判断 排行榜应用实现TOP N

    Processed: 0.016, SQL: 9