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

书史足自悦,安用勤与劬。这篇文章主要讲述手把手教你在Windows和Linux下安装Redis及了解Redis基本操作相关的知识,希望能为你提供帮助。

  • redis-windows:https://github.com/ServiceStack/redis-windows/
  • 管理工具RDM:https://rdm.dev/
1. 解压redis-windows
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

2. 配置redis-windows
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

修改redis.windows.conf
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

在底部添加上这两行,代表最大内存和设置密码。
然后在命令行模式下进入解压后的redis目录,键入下面命令
redis-server.exe redis.windows.conf
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

然后在打开一个命令行窗口,键入 redis-cli.exe
然后就打开客户端了。
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

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

文章图片

然后输入 auth 密码就可以连接服务端了。
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

输入PING,如果返回PONG,那么就说明连接成功!如果这样的话,恭喜你!
Linux环境下安装Redis
终端输入 sudo apt install redis
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

然后就输入 redis-cli进入客户端即可。
redis字符串操作
  1. 设置键值:name:ReganYue
set name ReganYue
  1. 获取值:get name
    手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

    文章图片
  2. 设置持续20秒的键值:setex wife 20 bingbing
    手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

    文章图片
  3. 设置多个键值mset(m代表multiple):mset name Regan wife bingbing age 18
  4. 一次获取多个键值:mget name wife age
手把手教你在Windows和Linux下安装Redis及了解Redis基本操作

文章图片

  1. 将值增加/减少1:
    127.0.0.1:6379> incr age (integer) 19 127.0.0.1:6379> decr age (integer) 18

  2. 将值增加5:
    127.0.0.1:6379> incrby age 5 (integer) 23 127.0.0.1:6379> get age "23"

  3. 将值减少10:
    127.0.0.1:6379> decrby age 10 (integer) 13 127.0.0.1:6379> get age "13"

  4. 将名字增加Yue
    127.0.0.1:6379> append name Yue (integer) 8 127.0.0.1:6379> get name "ReganYue"

  5. 获取字符串长度
    127.0.0.1:6379> get name "ReganYue" 127.0.0.1:6379> strlen name (integer) 8

  6. 当键不存在时才能添加该键值对
    127.0.0.1:6379> setnx name yy (integer) 0 127.0.0.1:6379> setnx name1 yy (integer) 1

  7. 同时添加多个键值对,当所有键都不存在时才能添加该键值对
127.0.0.1:6379> msetnx name gg age 1 wife bing (integer) 0 127.0.0.1:6379> msetnx myname gg myage 1 mywife bing (integer) 1 127.0.0.1:6379> mget myname myage mywife 1) "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"

  2. 显示m开头的键
    127.0.0.1:6379> keys m* 1) "mywife" 2) "myage" 3) "myname"

  3. 显示所有以e结尾的键
    127.0.0.1:6379> keys *e 1) "age" 2) "wife" 3) "name" 4) "mywife" 5) "myage" 6) "myname"

  4. 判断存在几个键
    127.0.0.1:6379> exists name age (integer) 2

    【手把手教你在Windows和Linux下安装Redis及了解Redis基本操作】此处显示2说明存在两个键。
  5. 判断键的类型
    127.0.0.1:6379> type name string 127.0.0.1:6379> type age string

  6. 删除键
    127.0.0.1:6379> del myname mywife (integer) 2

  7. 设置键的过期时间
    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 表示过期了。
  8. 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

  9. 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"

    这个操作十分危险!!!慎用!!!
  10. renamenx
    要更改的键不存在才重命名
  11. 下面说一个非常有趣的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 12 OK 127.0.0.1:6379> hmset wife2 name bing OK 127.0.0.1:6379> hmset wife2 age 22 OK

  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 age 1) "bingbing" 2) "12"

返回哈希集中指定字段的值。
哈希集中没有的字段,就返回 nil
  1. hallget
127.0.0.1:6379> hgetall wife3 1) "name" 2) "bingbing" 3) "age" 4) "12"

返回所有键和值的值,并组成一个列表,当哈希集不存在时返回空列表。
  1. hvals
127.0.0.1:6379> hvals wife3 1) "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) 1 127.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) 1 127.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进去。
  2. lrange
    127.0.0.1:6379> lrange mlist 0 -1 1) "1" 2) "2" 3) "3" 4) "4" 5) "5" 6) "6"

    表示查看该列表从第一个到最后一个的值。
  3. 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"

    表示在该列表的某个数后面追加元素。
  4. 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表示设置第几个元素为多少。
  5. 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是从右边弹出。
  6. 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是剪切出来然后保存。
  7. 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

    求列表的元素个数。
Redis之set操作
  1. sadd
    往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"

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

    查看集合mset的元素。
  3. scard
    127.0.0.1:6379> scard mset (integer) 7

    查看集合mset的元素个数
  4. 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求两集合的并集。
  5. sdiff
    127.0.0.1:6379> sdiff mset mset2 1) "1234" 2) "wo" 3) "234" 4) "342" 5) "ta"

    sdiff求差集
  6. sismember
    127.0.0.1:6379> sismember mset 1234 (integer) 1 127.0.0.1:6379> sismember mset 12345 (integer) 0

    看是否是集合中的元素
  7. 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"

    把两个集合的差集存在一个集合里面。
  8. 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里面。
  9. 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 3 1) "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里面。
  2. zrange
    127.0.0.1:6379> zrange MZ 0 -1 1) "jackmac" 2) "bill" 3) "Regan" 4) "jobs"

    查看所有元素。
  3. 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的元素个数。
  4. 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

    查看所在权重范围的个数。
  5. 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) 3 127.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 -1 1) "xiao" 2) "jackma" 3) "Regan" 127.0.0.1:6379> zrank uz xiao (integer) 0 127.0.0.1:6379> zrevrank uz xiao (integer) 2

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

    推荐阅读