Redis随笔

概述

参考菜鸟教程:https://www.runoob.com/redis/redis-tutorial.html

下载 & 安装

下载

下载地址:http://www.redis.cn/download.html

安装

下面以安装在Linux系统为例进行演示。

# 解压安装包
tar -xf redis-5.0.4.tar.gz

# 安装gcc(需要联网,可先使用 gcc -v 命令查看系统是否已安装gcc)
yum -y install gcc

# 进入Redis目录,进行编译
make

# 编译后进行安装
make install

安装后的操作

后台运行

# 编辑Redis配置文件
vim /opt/redis-5.0.4/redis.conf
# 设置后台运行
daemonize yes

# 开启Redis远程访问,将下面这行注释掉
# bind 127.0.0.1
# 这行表示只有bind的IP地址才能访问redis
# 将protected-mode设置为no
protected-mode no

# 修改默认密码
# 在配置文件中找到下面这一行 
# requirepass foobared
# 另起一行设置自己的密码,例如:
requirepass 123456


# 进入 /usr/local/bin/ 目录
cd /usr/local/bin/

# 以配置文件的方式启动
redis-server /opt/redis-5.0.4/redis.conf

关闭

# 进入 /usr/local/bin/ 目录
cd /usr/local/bin/

# 单实例关闭
redis-cli shutdown

# 多实例关闭
redis-cli -p 6379 shutdown

常用操作

# 进入 /usr/local/bin/ 目录
cd /usr/local/bin/

# 连接Redis客户端,连接后可输入 ping 进行测试,正常情况下会响应 PONG
redis-cli

# 性能测试,需要我们手动停止(Ctrl+C)
redis-benchmark

客户端常用命令

Redis客户端支持命令补全(Tab)。

命令的返回值为1表示true,0表示false。

命令说明
select 数据库编号切换数据库,编号0~15,共16个
dbsize查询数据库中键的数量
flushdb清空当前数据库
flushall清空所有(16个)数据库
keys *模糊查询key,支持通配符:
  *:通配任意多个字符
  ?:通配任意单个字符
  []:通配括号内的某一个字符
exists key判断key是否存在
move key 库编号移动key到其他库
ttl key查看key的过期时间
  -1:永不过期
  -2:已过期
expire key 秒为key设置过期时间(生命倒计时)
type key查看key的数据类型

字符串String

命令说明
set key value保存数据
get key获取数据
del key删除key
append key value在key的数据后追加value值,返回此时key值的总长度
strlen key返回key值的长度
incr keykey自增1(相当于key++
decr keykey自减1(相当于key--
incrby key xkey自增x(相当于key+=x
decrby key xkey自减x(相当于key-=x
getrange key x y查询key的值,范围是下标x ~ 下标y(包含xy)
setrange key x abc设置key的值,从下标x开始设置为abc
setex key x value添加数据的同时设置x秒的过期时间
setnx key value添加数据时判断key是否已存在,若存在则添加失败
mset k1 v1 k2 v2 k3 v3 ...同时添加多条数据
mget k1 v1 k2 v2 k3 v3 ...同时获取多条数据
msetnx k1 v1 k2 v2 k3 v3 ...同时添加多条数据时,先判断数据是否存在,若有一条存在则添加失败

列表List

左 = 上
右 = 下

性能:头尾操作效率高,中间操作效率低。

命令说明
lpush list 1 2 3从左向右往list添加数据123
rpush list 1 2 3从右向左往list添加数据123
lrange list x y查询list中下标x至下标y的数据
  lrange list 0 -1:查询list中的全部数据
lpop list从左边移除第一个元素
rpop list从右边移除第一个元素
lindex list x从上往下数,查询list中下标为x的元素
llen list返回list的长度
lrem list x y从list中删除x个y
ltrim list x y截取list中下标x~y的元素,其他元素全部删除
rpoplpush list1 list2list1右边移除一个元素,从左进入到list2中
lset list x y将list中下标为x的元素设置为y
linsert list before/after x y在list中的x元素前/后插入y元素

集合Set

与Java中的Set类似,Set集合中的数据不允许重复。

命令说明
sadd set 1 2 3向set中添加元素123
smembers set查询set中的所有元素
sismember set x判断set中是否存在x元素
scard set获取set中的元素个数
srem set x移除set中的x元素
srandmember set x从set中随机获取x个元素
spop set随机移除set中的一个元素
smove set1 set2 x将set1中的元素x移动到set2中
sinter set1 set2查询set1和set2中所有元素的交集
sunion set1 set2查询set1和set2中所有元素的并集
sdiff set1 set2查询set1和set2中所有元素的差集(在set1中存在,set2中不存在)

哈希Hash

类似Java中的Map<String, Object>
KeyValue模式不变,但Value是一个键值对。

命令说明
hset user id 01添加user,值为id=01
hsetnx user age 18添加user前判断age是否存在,若存在则添加失败
hget user id查询userid(必须携带id,否则会报错)
hmset user id 01 name tom age 18添加user,并批量设置属性
hmget user name age获取usernameage属性
hgetall user获取user的全部信息
hdel user age删除userage属性
hlen user返回user的属性数量
hexists user name判断user中是否存在name属性
hkeys/hvals user获取user中所有的属性名/属性值
hincrby/hincrbyfloat user money xuser中的money属性增加x(整数/小数)

有序集合Zset

命令说明
zadd zset 10 vip1 20 vip2 30 vip3 40 vip4 50 vip5添加数据
zrange zset 0 -1 [withscores]查询zset中的所有数据[带着分数查询]
zrevrange zset 0 -1查询zset中的所有数据(逆序)
zrangebyscore zset [(]20 [(]40 [limit x y]查询zset20~40之间的数据(包含20跟40)
  (20 (40:不包含20跟40
  limit x y:跳过x个,取y
zrevrangebyscore zset 40 20查询zset40~20之间的数据(逆序)
zrem zset vip1移除zset中的vip1
zcard zset查询集合中元素的个数
zcount zset 20 30查询分数在20~30之间的元素数量
zrank zset vip2查询zsetvip2的下标
zrevrank zset vip2查询zsetvip2的下标(逆序)
zscore zset vip2查询zsetvip2的分数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦翼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值