写点什么

手把手教你在 Windows 和 Linux 下安装 Redis 及了解 Redis 基本操作

用户头像
Regan Yue
关注
发布于: 2021 年 08 月 05 日
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

Windows 环境下安装 Redis

1. 解压 redis-windows

2. 配置 redis-windows


修改 redis.windows.conf



在底部添加上这两行,代表最大内存和设置密码。


然后在命令行模式下进入解压后的 redis 目录,键入下面命令


redis-server.exe redis.windows.conf



然后在打开一个命令行窗口,键入redis-cli.exe


然后就打开客户端了。




然后输入auth 密码就可以连接服务端了。



输入 PING,如果返回 PONG,那么就说明连接成功!如果这样的话,恭喜你!

Linux 环境下安装 Redis

终端输入sudo apt install redis



然后就输入redis-cli进入客户端即可。

redis 字符串操作

  1. 设置键值:name:ReganYue set name ReganYue

  2. 获取值:get name



  1. 设置持续 20 秒的键值:setex wife 20 bingbing



  1. 设置多个键值 mset(m 代表 multiple):mset name Regan wife bingbing age 18

  2. 一次获取多个键值:mget name wife age



  1. 将值增加/减少 1:


    127.0.0.1:6379> incr age    (integer) 19    127.0.0.1:6379> decr age    (integer) 18
复制代码


  1. 将值增加 5:


    127.0.0.1:6379> incrby age 5    (integer) 23    127.0.0.1:6379> get age    "23"
复制代码


  1. 将值减少 10:


    127.0.0.1:6379> decrby age 10    (integer) 13    127.0.0.1:6379> get age    "13"
复制代码


  1. 将名字增加 Yue


    127.0.0.1:6379> append name Yue    (integer) 8    127.0.0.1:6379> get name    "ReganYue"
复制代码


  1. 获取字符串长度


    127.0.0.1:6379> get name    "ReganYue"    127.0.0.1:6379> strlen name    (integer) 8
复制代码


  1. 当键不存在时才能添加该键值对


    127.0.0.1:6379> setnx name yy    (integer) 0    127.0.0.1:6379> setnx name1 yy    (integer) 1
复制代码


  1. 同时添加多个键值对,当所有键都不存在时才能添加该键值对


127.0.0.1:6379> msetnx name gg age 1 wife bing(integer) 0127.0.0.1:6379> msetnx myname gg myage 1 mywife bing(integer) 1127.0.0.1:6379> mget myname myage mywife1) "gg"2) "1"3) "bing"
复制代码


  • 返回 1 说明如果所有的 key 被 set

  • 返回 0 说明没有 key 被 set(至少其中有一个 key 是本来就存在的)


  1. PSETEX


psetex name 5000 ReganYue
复制代码


PSETEX 和 SETEX 一样,唯一的区别是到期时间以毫秒为单位,而不是秒。


  1. 截取字符串 getrange


127.0.0.1:6379> getrange name 0 2"Reg"127.0.0.1:6379> getrange name -1 -3""127.0.0.1:6379> getrange name -3 -1"gan"
复制代码

Redis 之 Key 键操作

  1. 显示所有键


    127.0.0.1:6379> keys *    1) "age"    2) "wife"    3) "name"    4) "name1"    5) "mywife"    6) "myage"    7) "myname"
复制代码


  1. 显示 m 开头的键


    127.0.0.1:6379> keys m*    1) "mywife"    2) "myage"    3) "myname"
复制代码


  1. 显示所有以 e 结尾的键


    127.0.0.1:6379> keys *e    1) "age"    2) "wife"    3) "name"    4) "mywife"    5) "myage"    6) "myname"
复制代码


  1. 判断存在几个键


    127.0.0.1:6379> exists name age    (integer) 2
复制代码


此处显示2说明存在两个键。
复制代码


  1. 判断键的类型


    127.0.0.1:6379> type name    string    127.0.0.1:6379> type age    string
复制代码


  1. 删除键


    127.0.0.1:6379> del myname mywife    (integer) 2
复制代码


  1. 设置键的过期时间


    127.0.0.1:6379> ttl name    (integer) -1    127.0.0.1:6379> expire name 10    (integer) 1    127.0.0.1:6379> ttl name    (integer) 8    127.0.0.1:6379> ttl name    (integer) 5    127.0.0.1:6379> ttl name    (integer) 2    127.0.0.1:6379> ttl name    (integer) -2
复制代码


`ttl name`的值为-1表示永不过期,
-2 表示过期了。
复制代码


  1. persist 取消键的过期时间


    127.0.0.1:6379> expire age 999    (integer) 1    127.0.0.1:6379> ttl age    (integer) 989    127.0.0.1:6379> persist age    (integer) 1    127.0.0.1:6379> ttl age    (integer) -1
复制代码


  1. rename 重命名


    127.0.0.1:6379> rename age aaaage    OK    127.0.0.1:6379> keys *    1) "wife"    2) "aaaage"    3) "name1"    4) "myage"    5) "hash1"
复制代码


这个操作十分危险!!!慎用!!!
复制代码


  1. renamenx

  2. 要更改的键不存在才重命名

  3. 下面说一个非常有趣的 randomkey


    127.0.0.1:6379> randomkey    "name1"    127.0.0.1:6379> randomkey    "hash1"    127.0.0.1:6379> randomkey    "wife"
复制代码

Redis 之 hash 操作

  1. hset&hmset


用来设置 hash 字段值。


hset 一次设置一个字段,hmset 一次可以设置多个字段的值。


127.0.0.1:6379> hmset wife3 name bingbing age 12OK127.0.0.1:6379> hmset wife2 name bingOK127.0.0.1:6379> hmset wife2 age 22OK
复制代码


  1. hget


返回哈希集中某字段的值


127.0.0.1:6379> hget wife2 name"bing"127.0.0.1:6379> hget wife3 name"bingbing"
复制代码


  1. hmget


127.0.0.1:6379> hmget wife3 name age1) "bingbing"2) "12"
复制代码


返回哈希集中指定字段的值。


哈希集中没有的字段,就返回 nil


  1. hallget


127.0.0.1:6379> hgetall wife31) "name"2) "bingbing"3) "age"4) "12"
复制代码


返回所有键和值的值,并组成一个列表,当哈希集不存在时返回空列表。


  1. hvals


127.0.0.1:6379> hvals wife31) "bingbing"2) "12"
复制代码


返回所有字段值。


  1. hlen


127.0.0.1:6379> hlen wife3(integer) 2
复制代码


返回 wife3 所有属性数


  1. hexists


127.0.0.1:6379> hexists wife3 name(integer) 1127.0.0.1:6379> hexists wife3 money(integer) 0
复制代码


判断哈希集里面是否存在该键。


  1. hdel


127.0.0.1:6379> hdel wife3 name (integer) 1
复制代码


删除哈希集里面的键值对


一次可以删除多个。


  1. hstrlen


127.0.0.1:6379> hset wife3 money 12222222222(integer) 1127.0.0.1:6379> hstrlen wife3 money(integer) 11
复制代码


hstrlen 可以求某键的值的长度。


  1. hincrby


127.0.0.1:6379> hincrby wife3 money 11(integer) 12222222233
复制代码


  1. hincrbyfloat


127.0.0.1:6379> hincrbyfloat wife3 money 0.231231"12222222233.23123100027441978"
复制代码

Redis 之 list 操作

  1. lpush&rpush


    127.0.0.1:6379> lpush mlist 2    (integer) 1    127.0.0.1:6379> lpush mlist 1    (integer) 2    127.0.0.1:6379> rpush mlist 3    (integer) 3    127.0.0.1:6379> rpush mlist 4 5 6    (integer) 6
复制代码


lpush表示在列表的左边push进去,rpush表示从列表的右边push进去。
复制代码


  1. lrange


    127.0.0.1:6379> lrange mlist 0 -1    1) "1"    2) "2"    3) "3"    4) "4"    5) "5"    6) "6"
复制代码


表示查看该列表从第一个到最后一个的值。
复制代码


  1. linsert


    127.0.0.1:6379> lrange mlist 0 -1    1) "1"    2) "2"    3) "2.5"    4) "3"    5) "4"    6) "5"    7) "6"    127.0.0.1:6379> linsert mlist after 3 2.    (integer) 8    127.0.0.1:6379> lrange mlist 0 -1    1) "1"    2) "2"    3) "2.5"    4) "3"    5) "2."    6) "4"    7) "5"    8) "6"    127.0.0.1:6379> linsert mlist after 3 2.6    (integer) 9    127.0.0.1:6379> lrange mlist 0 -1    1) "1"    2) "2"    3) "2.5"    4) "3"    5) "2.6"    6) "2."    7) "4"    8) "5"    9) "6"
复制代码


表示在该列表的某个数后面追加元素。
复制代码


  1. lset


    127.0.0.1:6379> lset mlist 5 333    OK    127.0.0.1:6379> linsert mlist after 3 2.6    (integer) 10    127.0.0.1:6379> lrange mlist 0 -1     1) "1"     2) "2"     3) "2.5"     4) "3"     5) "2.6"     6) "2.6"     7) "333"     8) "4"     9) "5"    10) "6"
复制代码


lset表示设置第几个元素为多少。
复制代码


  1. lpop 和 rpop


    127.0.0.1:6379> lrange mlist 0 -1     1) "1"     2) "2"     3) "2.5"     4) "3"     5) "2.6"     6) "2.6"     7) "333"     8) "4"     9) "5"    10) "6"    127.0.0.1:6379> lpop mlist    "1"    127.0.0.1:6379> rpop mlist    "6"    127.0.0.1:6379> lrange mlist 0 -1    1) "2"    2) "2.5"    3) "3"    4) "2.6"    5) "2.6"    6) "333"    7) "4"    8) "5"
复制代码


如字面意思,就是从列表弹出值,lpop是从左边弹出,rpop是从右边弹出。
复制代码


  1. ltrim


    127.0.0.1:6379> lrange mlist 0 -1    1) "2"    2) "2.5"    3) "3"    4) "2.6"    5) "2.6"    6) "333"    7) "4"    8) "5"    127.0.0.1:6379> ltrim mlist 1 4    OK    127.0.0.1:6379> lrange mlist 0 -1    1) "2.5"    2) "3"    3) "2.6"    4) "2.6"
复制代码


ltrim是剪切出来然后保存。
复制代码


  1. mlist


    127.0.0.1:6379> lrange mlist 0 -1    1) "2.5"    2) "3"    3) "2.6"    4) "2.6"    127.0.0.1:6379> llen mlist    (integer) 4
复制代码


求列表的元素个数。
127.0.0.1:6379> spop mset1
复制代码

Redis 之 set 操作

  1. sadd

  2. 往 set 中添加元素


    127.0.0.1:6379> sadd mset 1234 342 234 111    (integer) 4    127.0.0.1:6379> sadd mset ni wo ta    (integer) 3    127.0.0.1:6379> smembers mset    1) "342"    2) "1234"    3) "ni"    4) "111"    5) "234"    6) "wo"    7) "ta"
复制代码


  1. smembers


    127.0.0.1:6379> smembers mset    1) "342"    2) "1234"    3) "ni"    4) "111"    5) "234"    6) "wo"    7) "ta"
复制代码


查看集合mset的元素。0.  scard
复制代码


    127.0.0.1:6379> scard mset    (integer) 7
复制代码


查看集合mset的元素个数
复制代码


  1. sinter


    127.0.0.1:6379> sadd mset2 a b c d    (integer) 4    127.0.0.1:6379> sadd mset2 ni 111    (integer) 2    127.0.0.1:6379> sinter mset mset2    1) "ni"    2) "111"
复制代码


sinter求两集合的并集。
复制代码


  1. sdiff


    127.0.0.1:6379> sdiff mset mset2    1) "1234"    2) "wo"    3) "234"    4) "342"    5) "ta"
复制代码


sdiff求差集0.  sismember
复制代码


    127.0.0.1:6379> sismember mset 1234    (integer) 1    127.0.0.1:6379> sismember mset 12345    (integer) 0
复制代码


看是否是集合中的元素
复制代码


  1. sdiffstore


    127.0.0.1:6379> sdiffstore mset3 mset mset2    (integer) 5    127.0.0.1:6379> smembers mset3    1) "1234"    2) "wo"    3) "234"    4) "342"    5) "ta"
复制代码


把两个集合的差集存在一个集合里面。
复制代码


  1. smove


    127.0.0.1:6379> smove mset2 mset1 a    (integer) 1    127.0.0.1:6379> smembers mset2    1) "c"    2) "ni"    3) "b"    4) "111"    5) "d"    127.0.0.1:6379> smembers mset1    1) "a"
复制代码


将mset2里面的元素a移到mset1里面。
复制代码


  1. spop


随机弹出一个或多个


127.0.0.1:6379> spop mset1"a"127.0.0.1:6379> spop mset1(nil)127.0.0.1:6379> spop mset2"b"127.0.0.1:6379> spop mset2"ni"127.0.0.1:6379> spop mset2 31) "c"2) "d"3) "111
复制代码

Redis 之 zset

  1. zadd


    127.0.0.1:6379> zadd MZ 10 Regan 8 jackmac 9 bill 12 jobs     (integer) 4    127.0.0.1:6379> zrange MZ 0 -1     1) "jackmac"    2) "bill"    3) "Regan"    4) "jobs"
复制代码


添加元素及其权重到zset里面。
复制代码


  1. zrange


    127.0.0.1:6379> zrange MZ 0 -1     1) "jackmac"    2) "bill"    3) "Regan"    4) "jobs"
复制代码


查看所有元素。
复制代码


  1. zcard


    127.0.0.1:6379> zrange MZ 0 -1     1) "jackmac"    2) "bill"    3) "Regan"    4) "jobs"    127.0.0.1:6379> zcard MZ    (integer) 4
复制代码


zcard可以查看zset的元素个数。
复制代码


  1. zcount


    127.0.0.1:6379> zadd MZ 10 Regan 8 jackmac 9 bill 12 jobs     (integer) 4    127.0.0.1:6379> zcount MZ 9 10    (integer) 2
复制代码


查看所在权重范围的个数。
复制代码


  1. zscore


    127.0.0.1:6379> zscore MZ Regan    "10"
复制代码


查看元素的权重。


  1. zinterstore


    127.0.0.1:6379> zinterstore iz 2 MZ mz2    (integer) 1    127.0.0.1:6379> zrange iz 0 -1    1) "Regan"
复制代码


将两个 zset 合并并保存。


  1. zunionstore


127.0.0.1:6379> zunionstore uz 2 iz mz2(integer) 3127.0.0.1:6379> zrange uz 0 -1 1) "xiao"2) "jackma"3) "Regan"127.0.0.1:6379> zscore uz xiao"1"127.0.0.1:6379> zscore uz Regan"30"
复制代码


zunionstore 是求并集,并且会将相同元素的权重相加。


  1. zrank&zrevrank


127.0.0.1:6379> zrange uz 0 -11) "xiao"2) "jackma"3) "Regan"127.0.0.1:6379> zrank uz xiao(integer) 0127.0.0.1:6379> zrevrank uz xiao(integer) 2
复制代码


zrank 是求 zset 内元素的编号。


zrevrank 是求 zset 内元素逆序编号。

发布于: 2021 年 08 月 05 日阅读数: 10
用户头像

Regan Yue

关注

还未添加个人签名 2020.08.12 加入

还未添加个人简介

评论

发布
暂无评论
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作