Redis简介与命令
Redis简介
Redis(Remote Dictionary Server,远程字典服务)
一个开源的高性能数据键值对存储数据库。为什么高性能,很好理解,一般关系型数据库存储数据的地方都是磁盘,但属于非关系型数据库的Redis存储数据的地方是内存。内存与磁盘的性能差异可想而知。
Redis下载与安装
Redis虽然是个开源软件,但是后面商业化了,Redis7版本后就有社区版与企业版的区别了。
微软维护的适用于windows的Redis版本比较老了,只在3就截止了,有一个第三方维护的Redis版本在5,相对来说新一点。
第三方维护地址
微软维护地址
无论是msi文件方式安装还是直接解压安装,都是开箱即用,无需配置任何东西。
双击运行Redis服务端
双击运行Redis的客户端
客户端会连接到刚才的服务端,并通过输入命令来对Redis数据库里的数据进行增删改查。
Redis图形化工具
与其他数据库一样,肯定有人开发了图形化工具(不止一个)给Redis使用,不会一直用黑窗口的。
目前我用的是RESP,适合新手过渡学习期。
从图片可以看出Redis默认有16个数据库,如果不指定用的就是第一个。
Redis数据存储类型
Redis的特点就是键值对存储,这让我们省心了不少,他的key值永远是字符串类型,Value要记的类型也不多。这里的Value与其说是存储类型,不如说是存储结构。
字符串(String)
字符串是Redis中最基本的数据类型,可以存储文本或二进制数据。
特点:
存储内容:可以存储任意类型的字符串,包括文本、数字、二进制数据等。
最大长度:单个字符串的最大长度为512MB。
操作:支持多种操作,如设置值、获取值、追加内容、对字符串进行位图操作等。
常见命令
键值过期时间这个概念后期要多注意一下
存放键值:set key value [EX seconds] [PX milliseconds] [NX|XX]
值递增:incr key、incrby key increment、incrbyfloat key increment
值递减:decr [其余与值递增相同]
批量存放键值:mset key value [key value …]
获取部分字符:getrange key start end
追加内容:append key value
删除键值:del key [key ...]
练习案例
127.0.0.1:6379> set name zhansan
OK
127.0.0.1:6379> get name
"zhansan"
127.0.0.1:6379> set age 16
OK
127.0.0.1:6379> incr age
(integer) 17
127.0.0.1:6379> decr age
(integer) 16
127.0.0.1:6379> append age 12
(integer) 4
127.0.0.1:6379> append name g
(integer) 8
127.0.0.1:6379> get name
"zhansang"
127.0.0.1:6379> get age
"1612"
127.0.0.1:6379> incr age
(integer) 1613
127.0.0.1:6379> getrange name 1 3
"han"
127.0.0.1:6379> set address shanghai EX 10
OK
127.0.0.1:6379> get address
"shanghai"
127.0.0.1:6379> get address
(nil)
127.0.0.1:6379> incrby age 10
(integer) 1623
127.0.0.1:6379> incrbyfloat name 0.5
(error) ERR value is not a valid float
127.0.0.1:6379> incrbyfloat age 1.05
"1624.04999999999995453"
127.0.0.1:6379> mset 1 haha 2 xixi 3 hehe
OK
127.0.0.1:6379> get 1
"haha"
127.0.0.1:6379> get 2
"xixi"
127.0.0.1:6379> get 3
"hehe"
列表(List)
列表是一个有序的字符串集合,支持从头部或尾部插入和删除元素。
特点
存储结构:列表是一个双向链表,支持从头部或尾部快速插入和删除元素。
操作:可以对列表进行插入、删除、获取元素等操作。
阻塞操作:支持阻塞式操作,如BLPOP
和BRPOP
,可以在列表为空时阻塞等待。
常见命令
- 在列表左侧插入值:
lpush key value [value …]
- 在列表右侧插入值:
rpush key value [value …]
- 移除并获取列表左侧元素:
lpop key
- 获取列表指定范围内的元素:
lrange key start stop
- 获取列表长度:
llen key
- 获取列表指定索引位置的元素:
lindex key index
练习案例
127.0.0.1:6379> lpush mylist zhansan lisi wanwu laoliu
(integer) 4
127.0.0.1:6379> rpush mylist zhaoqi
(integer) 5
127.0