Redis入门:介绍+下载地址与安装步骤+操作命令+基础命令+键命令+数据结构

Redis入门

一、Redis简介

Redis,即REmote DIctionary Server,远程的字典服务,是一个使用ANSI C语言编写的开源数据库,是高性能的key-value数据库,属于内存数据库,将内存导出到磁盘上,支持数据持久化,也就是说,当我们把数据存在Redis之后,数据都会在内存当中,我们可以使它持久化到硬盘上,到机器重启的时候,可以将数据reload回来


二、Redis常用数据类型

[外链图片转存失败(img-sgboI09f-1565366058092)(F:\在线process\Redis数据类型 (1)].jpg)

例如我们Type对应的是String类型,对应的encoding就可以为raw或者int,如果是int,则代表Redis内部是按照数值类型存储,在Redis数据类型没有数值类型


三、Windows安装Redis
3.1 下载地址

redis-2.8.0-windows.zip下载地址

3.2 启动Redis

在这里插入图片描述

3.3 启动客户端

打开redis-cli,这只键值对,查看所有键,获取键对应的值

在这里插入图片描述


四、Redis服务、Redis客户端启动的操作命令
4.1 启动服务端,再启动客户端,两个不同的cmd
命令:
C:\Users\JessicaMaos>cd E:\Redis\redis-2.8.0-windows
C:\Users\JessicaMaos>e:
E:\Redis\redis-2.8.0-windows>redis-server.exe
结果:
Port:6379
PID:16484
命令:
C:\Users\JessicaMaos>cd E:\Redis\redis-2.8.0-windows
C:\Users\JessicaMaos>e:
E:\Redis\redis-2.8.0-windows>redis-cli
4.2 测试客户端服务
命令:
127.0.0.1:6379> ping
结果:
PONG
4.3 服务端使用ctrl+c
结果:
[7684] 09 Aug 16:54:26.142 * DB saved on disk
[7684] 09 Aug 16:54:26.142 # Redis is now ready to exit, bye bye...
解释:
虽然显示了DB saved on disk,但是这时候客户端还在运行,突然结束服务端,是没有成功进行持久化的
4.4 正常关闭服务
命令:
E:\Redis\redis-2.8.0-windows>redis-cli shutdown
4.5 更换端口启动
命令:
E:\Redis\redis-2.8.0-windows>redis-server.exe --port 6380
结果:
Port:6380
PID:4312
命令:
E:\Redis\redis-2.8.0-windows>redis-cli
结果:
没有反应,因为这里使用了默认端口6379

命令:
E:\Redis\redis-2.8.0-windows>redis-cli -p 6380

命令:
E:\Redis\redis-2.8.0-windows>redis-cli -p 6380 shutdown
解释:
连接与关闭的时候都需要指定端口,否则使用默认端口
4.6 指定ip连接
命令:
E:\Redis\redis-2.8.0-windows>redis-cli -p 6380 -h 127.0.0.1
解释:
因为现在在本机,所以是127.0.0.1,如果有其他机器在局域网或者外网,就可以用-h指定
4.7 配置文件redis.windows-service.conf或redis.windows.conf
4.7.1 端口

在这里插入图片描述

4.7.2 设置密码

注释去掉,requirepass后面便为密码

在这里插入图片描述
在这里插入图片描述
启动Redis

E:\Redis\redis-2.8.0-windows>redis-server.exe redis.windows.conf

密码登录客户端

E:\Redis\redis-2.8.0-windows>redis-cli -a derrick


五、Redis基础命令
5.1 info
命令:
127.0.0.1:6379> info
结果:
# Server
redis_version:2.8.2402
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:b2a45a9622ff23b7
redis_mode:standalone
os:Windows
arch_bits:64
multiplexing_api:winsock_IOCP
process_id:880
run_id:3fa4a9df5d0855cb42520d73ee7de5f47c8a2173
tcp_port:6379
uptime_in_seconds:229
uptime_in_days:0
hz:10
lru_clock:5064412
config_file:E:\Redis\redis-2.8.0-windows\redis.windows.conf

# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:953224
used_memory_human:930.88K
used_memory_rss:919584
used_memory_peak:953224
used_memory_peak_human:930.88K
used_memory_lua:36864
mem_fragmentation_ratio:0.96
mem_allocator:dlmalloc-2.8
......
5.2 Keyspace
5.2.1 查看配置文件

设置database数量,默认为0,使用select id选择database,

在这里插入图片描述

5.2.2 操作
# Keyspace
db0:keys=2,expires=0,avg_ttl=0

命令:
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> set Jessica Derrick
OK
127.0.0.1:6379[1]> select 0
OK
结果:
# Keyspace
db0:keys=2,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
5.3 flushdb与flushall

flushdb清除当前的database里面的key,flushall清除所有的database里面的key

# Keyspace
db0:keys=2,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0

命令:
127.0.0.1:6379> flushdb
OK
结果:
# Keyspace
db1:keys=1,expires=0,avg_ttl=0
5.4 dbsize

查看当前db的key数量

127.0.0.1:6379> dbsize
(integer) 0
5.5 save

人工进行持久化

5.6 clear

清屏

5.7 quit

退出


六、Redis键命令
6.1 删除键del

删除返回1,删除返回0

127.0.0.1:6379> keys *
1) "test"
127.0.0.1:6379> del test
(integer) 1
127.0.0.1:6379> del noexists
(integer) 0
6.2 存在键exists

存在返回1,不存在返回0

127.0.0.1:6379> set a a
OK
127.0.0.1:6379> set b b
OK
127.0.0.1:6379> exists a
(integer) 1
127.0.0.1:6379> exists c
(integer) 0
6.3 生命周期ttl

键的剩余生存时间,单位为秒,返回-1的时候代表这个key没有过期时间,即永久

127.0.0.1:6379> ttl a
(integer) -1
6.4 设置过期时间expire

当key过期之后,ttl不存在的key则返回-2,用于单点登录与session的有效期模拟

127.0.0.1:6379> expire a 10
(integer) 1
127.0.0.1:6379> ttl a
(integer) 8
127.0.0.1:6379> ttl a
(integer) -2
6.5 类型type

返回key的类型

127.0.0.1:6379> type b
string
127.0.0.1:6379> hset hash name tom
(integer) 1
127.0.0.1:6379> type hash
hash
6.6 随机键randomkey

随机返回一个key

127.0.0.1:6379> randomkey
"b"
127.0.0.1:6379> randomkey
"hash"
6.7 重命名key

修改key的名称,但是如果将存在的key的name名字修改为现有的,则会覆盖现有的key值

127.0.0.1:6379> keys *
1) "c"
2) "hash"
3) "a"
4) "b"
127.0.0.1:6379> rename a d
OK
127.0.0.1:6379> keys *
1) "d"
2) "hash"
3) "c"
4) "b"
6.8 以nx结尾

以nx结尾的一般用于判断,下面命令行中,由于b已经存在,代表rename没有生效,返回0,返回1的时候代表命令生效

127.0.0.1:6379> renamenx a b
(integer) 0
127.0.0.1:6379> get a
"a"
127.0.0.1:6379> get b
"b"
127.0.0.1:6379> renamenx a m
(integer) 1
127.0.0.1:6379> get m
"a"


七、Redis数据结构
7.1 String字符串
//这里就是以string类型来存储
127.0.0.1:6379> set a a
OK
127.0.0.1:6379> set b b
OK

//在set的过程中设置有效期,第一个c为key,第二c为value,有效期单位为秒
127.0.0.1:6379> setex c 100 c
OK
127.0.0.1:6379> ttl c
(integer) 96

//在set的过程中设置有效期,有效期单位为毫秒
127.0.0.1:6379> psetex d 10000 d
OK
127.0.0.1:6379> ttl d
(integer) 8


//获取值,如果有则返回,如果没有则返回null
127.0.0.1:6379> get a
"a"
127.0.0.1:6379> get Derrick
(nil)

//获取字符串,截取字符串
127.0.0.1:6379> get word
"wordword"
127.0.0.1:6379> getrange word 0 2
"wor"

//先获取再修改,修改之前会返回旧的值
127.0.0.1:6379> getset a aa
"a"
127.0.0.1:6379> get a
"aa"

//同时设置多个key-value
127.0.0.1:6379> mset Jessica1 Jessica1 Derrick2 Derrick2
OK
127.0.0.1:6379> keys *
1) "word"
2) "Jessica1"
3) "a"
4) "b"
5) "Derrick2"

//同时获取多个value
127.0.0.1:6379> mget Jessica1 Derrick2
1) "Jessica1"
2) "Derrick2"

//setnx,设置key时会判断,如果key已经存在,则返回0,代表不成功,反之返回1,代表成功
127.0.0.1:6379> setnx a newavalue
(integer) 0
127.0.0.1:6379> setnx newavalue newavalue
(integer) 1

//获取字符串长度
127.0.0.1:6379> strlen word
(integer) 8

//msetnx,批量处理,具有原子性,要么一起成功,要么一起失败
127.0.0.1:6379> msetnx q q w w
(integer) 1
127.0.0.1:6379> msetnx q q w1 w1
(integer) 0

//使key加1,需要为数值类型,当需要加的key不存在,则会创建key-value,value默认值为1
127.0.0.1:6379> set 1 1
OK
127.0.0.1:6379> get 1
"1"
127.0.0.1:6379> incr 1
(integer) 2
127.0.0.1:6379> incr 2
(integer) 1
127.0.0.1:6379> get 1
"2"
127.0.0.1:6379> keys *
 1) "q"
 2) "newavalue"
 3) "Jessica1"
 4) "2"
 5) "word"
 6) "w"
 7) "b"
 8) "a"
 9) "1"
10) "Derrick2"


//使key按照一定值增加
127.0.0.1:6379> incrby 1 100
(integer) 102
127.0.0.1:6379> incrby 1 100
(integer) 202
127.0.0.1:6379> get 1
"202"

//使key减1
127.0.0.1:6379> decr 1
(integer) 201
127.0.0.1:6379> decr 1
(integer) 200

//使key按照一定值减少
127.0.0.1:6379> decrby 1 100
(integer) 100
127.0.0.1:6379> decrby 1 50
(integer) 50
127.0.0.1:6379> get 1
"50"

//在字符串后添加
127.0.0.1:6379> append 1 Jessica
(integer) 9
127.0.0.1:6379> get 1
"50Jessica"
7.2 hash哈希
//更换命名空间
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

//hset代表处理哈希,Jessica代表里面有个hash名为Jessica
127.0.0.1:6379[1]> hset map Jessica Maomaos
(integer) 1
127.0.0.1:6379[1]> keys *
1) "map"
127.0.0.1:6379[1]> type map
hash

//判断hash是否存在,返回1代表存在,返回0代表不存在
127.0.0.1:6379[1]> hexists map Jessica
(integer) 1
127.0.0.1:6379[1]> hexists map Derrick
(integer) 0

//获取hash里面的map的key的对应值
127.0.0.1:6379[1]> hget map Jessica
"Maomaos"
127.0.0.1:6379[1]> hget map Derrick
(nil)

//获取map里面所有的键与值
127.0.0.1:6379[1]> hgetall map
1) "Jessica"
2) "Maomaos"

//获取map里面所有keys
127.0.0.1:6379[1]> hkeys map
1) "Jessica"

//获取map里面所有values
127.0.0.1:6379[1]> hvals map
1) "Maomaos"

//获取map里面的key的数量
127.0.0.1:6379[1]> hlen map
(integer) 1

//获取多个key对应的值
127.0.0.1:6379[1]> hmget map Jessica
1) "Maomaos"

//同时在map中设置多个键值对
127.0.0.1:6379[1]> hmset map new1 new1 new2 new2
OK

//删除map里面的key
127.0.0.1:6379[1]> hdel map new1 new2
(integer) 2
127.0.0.1:6379[1]> hkeys map
1) "Jessica"

//nx代表存在判断,如果map中不存在此key,则设置并返回1,如果存在,则不设置并返回0
127.0.0.1:6379[1]> hsetnx map Jessica newJessica
(integer) 0
127.0.0.1:6379[1]> hsetnx map newJessica newJessica
(integer) 1
7.3 list列表
//l代表操作列表,设置key为list,里面的值分别为1 2 3 4 5 6
127.0.0.1:6379[2]> lpush list 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379[2]> keys *
1) "list"
127.0.0.1:6379[2]> type list
list

//查看list长度
127.0.0.1:6379[2]> llen list
(integer) 6

//获取一定list范围内的值,最后放入的值在最前面,类似于栈
127.0.0.1:6379[2]> lrange list  0 2
1) "6"
2) "5"
3) "4"

//设置list里面某个位置的元素值
127.0.0.1:6379[2]> lset list 0 100
OK
127.0.0.1:6379[2]> lrange list 0 2
1) "100"
2) "5"
3) "4"

//通过索引获取list中某个元素值
127.0.0.1:6379[2]> lindex list 5
"1"

//移除列表的第一个元素
127.0.0.1:6379[2]> lpop list
"100"

//移除列表的最后一个元素
127.0.0.1:6379[2]> rpop list
"1"

7.4 set集合
//s代表操作集合,key的值为set,往set里面添加a b c d元素
127.0.0.1:6379[3]> sadd set a b c d
(integer) 4
127.0.0.1:6379[3]> keys *
1) "set"
127.0.0.1:6379[3]> type set
set

//set元素不可以重复,所以返回值为0.代表添加失败
127.0.0.1:6379[3]> sadd set a
(integer) 0

//获取set里面元素个数
127.0.0.1:6379[3]> scard set
(integer) 4

//修改集合名字
127.0.0.1:6379[3]> rename set set1
OK
127.0.0.1:6379[3]> keys *
1) "set1"

//查看集合里面的元素,set是通过hash实现,时间复杂度为O(1),为无序的
127.0.0.1:6379[3]> smembers set1
1) "c"
2) "d"
3) "b"
4) "a"

//差集
127.0.0.1:6379[3]> sdiff set1 set2
1) "a"
2) "b"
127.0.0.1:6379[3]> sdiff set2 set1
1) "f"
2) "e"

//交集
127.0.0.1:6379[3]> sinter set1 set2
1) "c"
2) "d"

//并集
127.0.0.1:6379[3]> sunion set1 set2
1) "f"
2) "e"
3) "d"
4) "c"
5) "a"
6) "b"

//返回集合中一个或多个随机数
127.0.0.1:6379[3]> srandmember set1 2
1) "a"
2) "d"
127.0.0.1:6379[3]> srandmember set1 2
1) "c"
2) "a"

//判断某个元素是否为这个集合中的成员
127.0.0.1:6379[3]> sismember set1 a
(integer) 1
127.0.0.1:6379[3]> sismember set1 jessica
(integer) 0

//移除集合中某些元素
127.0.0.1:6379[3]> smembers set1
1) "d"
2) "c"
3) "a"
4) "b"
127.0.0.1:6379[3]> srem set1 a b
(integer) 2
127.0.0.1:6379[3]> smembers set1
1) "d"
2) "c"

//移除并返回集合中的某些元素
127.0.0.1:6379[3]> spop set2
"f"
127.0.0.1:6379[3]> smembers set2
1) "c"
2) "e"
3) "d"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值