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 字符串操作
设置键值:name:ReganYue set name ReganYue
获取值:get name
设置持续 20 秒的键值:setex wife 20 bingbing
设置多个键值 mset(m 代表 multiple):mset name Regan wife bingbing age 18
一次获取多个键值:mget name wife age
将值增加/减少 1:
127.0.0.1:6379> incr age
(integer) 19
127.0.0.1:6379> decr age
(integer) 18
复制代码
将值增加 5:
127.0.0.1:6379> incrby age 5
(integer) 23
127.0.0.1:6379> get age
"23"
复制代码
将值减少 10:
127.0.0.1:6379> decrby age 10
(integer) 13
127.0.0.1:6379> get age
"13"
复制代码
将名字增加 Yue
127.0.0.1:6379> append name Yue
(integer) 8
127.0.0.1:6379> get name
"ReganYue"
复制代码
获取字符串长度
127.0.0.1:6379> get name
"ReganYue"
127.0.0.1:6379> strlen name
(integer) 8
复制代码
当键不存在时才能添加该键值对
127.0.0.1:6379> setnx name yy
(integer) 0
127.0.0.1:6379> setnx name1 yy
(integer) 1
复制代码
同时添加多个键值对,当所有键都不存在时才能添加该键值对
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"
复制代码
PSETEX
psetex name 5000 ReganYue
复制代码
PSETEX 和 SETEX 一样,唯一的区别是到期时间以毫秒为单位,而不是秒。
截取字符串 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 键操作
显示所有键
127.0.0.1:6379> keys *
1) "age"
2) "wife"
3) "name"
4) "name1"
5) "mywife"
6) "myage"
7) "myname"
复制代码
显示 m 开头的键
127.0.0.1:6379> keys m*
1) "mywife"
2) "myage"
3) "myname"
复制代码
显示所有以 e 结尾的键
127.0.0.1:6379> keys *e
1) "age"
2) "wife"
3) "name"
4) "mywife"
5) "myage"
6) "myname"
复制代码
判断存在几个键
127.0.0.1:6379> exists name age
(integer) 2
复制代码
判断键的类型
127.0.0.1:6379> type name
string
127.0.0.1:6379> type age
string
复制代码
删除键
127.0.0.1:6379> del myname mywife
(integer) 2
复制代码
设置键的过期时间
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 表示过期了。
复制代码
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
复制代码
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"
复制代码
renamenx
要更改的键不存在才重命名
下面说一个非常有趣的 randomkey
127.0.0.1:6379> randomkey
"name1"
127.0.0.1:6379> randomkey
"hash1"
127.0.0.1:6379> randomkey
"wife"
复制代码
Redis 之 hash 操作
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
复制代码
hget
返回哈希集中某字段的值
127.0.0.1:6379> hget wife2 name
"bing"
127.0.0.1:6379> hget wife3 name
"bingbing"
复制代码
hmget
127.0.0.1:6379> hmget wife3 name age
1) "bingbing"
2) "12"
复制代码
返回哈希集中指定字段的值。
哈希集中没有的字段,就返回 nil
。
hallget
127.0.0.1:6379> hgetall wife3
1) "name"
2) "bingbing"
3) "age"
4) "12"
复制代码
返回所有键和值的值,并组成一个列表,当哈希集不存在时返回空列表。
hvals
127.0.0.1:6379> hvals wife3
1) "bingbing"
2) "12"
复制代码
返回所有字段值。
hlen
127.0.0.1:6379> hlen wife3
(integer) 2
复制代码
返回 wife3 所有属性数
hexists
127.0.0.1:6379> hexists wife3 name
(integer) 1
127.0.0.1:6379> hexists wife3 money
(integer) 0
复制代码
判断哈希集里面是否存在该键。
hdel
127.0.0.1:6379> hdel wife3 name
(integer) 1
复制代码
删除哈希集里面的键值对
一次可以删除多个。
hstrlen
127.0.0.1:6379> hset wife3 money 12222222222
(integer) 1
127.0.0.1:6379> hstrlen wife3 money
(integer) 11
复制代码
hstrlen 可以求某键的值的长度。
hincrby
127.0.0.1:6379> hincrby wife3 money 11
(integer) 12222222233
复制代码
hincrbyfloat
127.0.0.1:6379> hincrbyfloat wife3 money 0.231231
"12222222233.23123100027441978"
复制代码
Redis 之 list 操作
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进去。
复制代码
lrange
127.0.0.1:6379> lrange mlist 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
复制代码
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"
复制代码
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"
复制代码
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是从右边弹出。
复制代码
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"
复制代码
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 操作
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"
复制代码
smembers
127.0.0.1:6379> smembers mset
1) "342"
2) "1234"
3) "ni"
4) "111"
5) "234"
6) "wo"
7) "ta"
复制代码
127.0.0.1:6379> scard mset
(integer) 7
复制代码
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"
复制代码
sdiff
127.0.0.1:6379> sdiff mset mset2
1) "1234"
2) "wo"
3) "234"
4) "342"
5) "ta"
复制代码
127.0.0.1:6379> sismember mset 1234
(integer) 1
127.0.0.1:6379> sismember mset 12345
(integer) 0
复制代码
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"
复制代码
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"
复制代码
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
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"
复制代码
zrange
127.0.0.1:6379> zrange MZ 0 -1
1) "jackmac"
2) "bill"
3) "Regan"
4) "jobs"
复制代码
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
复制代码
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
复制代码
zscore
127.0.0.1:6379> zscore MZ Regan
"10"
复制代码
查看元素的权重。
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 合并并保存。
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 是求并集,并且会将相同元素的权重相加。
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 内元素逆序编号。
评论