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

通过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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值