最近和别人交流,经常听到redis。什么“Springboot没有配置redis,这个项目启动会报错,忽略就行了”,“我写过一个Springboot项目,MyBatis+拦截器+定时都有,还有redis没有弄好”,“NoSQL数据库知道一两个就够用了,我只知道redis和MongoDB”……这里就做一个简单的了解吧。其实很早就用过了,只是我没有注意而已。
1、简介
Redis(Remote DIctionary Server远程数据服务)是一个免费开源的key-value存储系统,非关系型数据库。它通常被称为数据结构服务器。
支持数据持久化,数据缓存在内存中,但是可以将内存中的数据异步写入磁盘中。支持复杂的数据结构并提供对其的原子性(要么做要么不做,事务四大特性之一)操作。
value支持字符串(String),列表(List),集合(Set),有序集合(Zset:Sorted Set)哈希(Hash)。
2、安装
说到安装,又是泪啊。(官网的4.0.10是支持32位的windows,直接在根目录执行redis-server,启动的版本是2.6.12,请跳转到下一个段落,你想看我也没办法,懒得删了。)Redis的GitHub上只有64位,win32位的11年笔记本伤不起啊,以后32位就淘汰了。没有就没有吧,好在上边有源码,自己编译成32位的吧。电脑里没有VS,毕竟不是当开发用的,从微软官上下载community2017,结果下载地址返回blob:https://www.visualstudio.com/c0270223-ee28-4dd9-9781-730e00333e6c,这让我说啥好呢,根本下不了。从第三方下载下来,结果不支持,还让我更新win7 Service Pack 1。然后去找vs2015看了看大小,想想了电脑配置。还是算了吧,从网上找现成的redis吧,版本低点就低点吧(苦笑)。最后版本为2.6.12。
配置环境变量path到redis根目录,cmd中执行redis-server,显示如下。之前做过的项目有看到过这个图标,但是那时没有实感。另外这个窗口不能关闭,不然redis会停止运行。
开启另一个cmd窗口进行访问。配置文件没有动过,默认服务器127.0.0.1端口6379,执行redis-cli -h 127.0.0.1 -p6379,也可以只执行到cli,会访问默认的配置。结果如下表示访问成功。
3、常用配置
配置文件位于redis根目录的redis.conf文件。参数很多,主要写写个人个人个人认为常用的配置,不明白的就不写了。
端口:port
绑定的主机地址:bind
超时时间:timeout 0表示关闭
日志级别:loglevel四个级别
debug、verbose(默认)、notice、warning
数据库数量:databases
同步操作:save 经过多长时间(秒)内,多少次更新,同步到数据文件。可以多条配合。Save 60 10000 60秒内有10000个更改时同步。
数据库存放路径:dir
最大连接数:maxclients 0表示不做限制
最大内存:maxmemory达到最大值是只能读不能写
4、常用命令
Redis的命令有很多,就挑了一部分。
客户端启动:redis-cli
redis-cli -h host -p port -a password
产看服务是否运行:ping正常返回PONG
关闭当前连接:quit
切换到指定数据库:selectindex下标从开始
服务器统计信息:info
获取配置信息:configget parameter parameter,*是全部,也可以单独指定
设置配置信息:configset parameter value
数据库备份:save在redis安装目录中创建dump.rdb文件
Key相关命令:
删除:del
序列化:dump
是否存在:exists
设置过期时间:expire单位秒
expireaat单位时间戳
pexpire单位毫秒
pexpireat单位时间戳毫秒级
查找所有符合的key:keys *所有,?一个字符,[ab]其中一个字符
移动指定数据库:move key db
移除过期时间:persist会变成永久
显示剩余生存时间:pttl单位毫秒
ttl单位秒
随机返回key:randomkey
修改名称:rename keynewkey
Renamenx key newkey当newkey不存在时更改
返回值类型:type
字符串String相关:
设置:set keyvalue
获取:get
截取:getrangekey start end下标都从开始
设置获取:getsetkey value会返回旧值
获得长度:strlen
列表List相关:
添加:lpush keyvalue1 [value2]插入到列表头部
lpushx key value key不存在时不做处理
rpush key value1 [value2]插入到列表尾部
rpush key value
获取:lindex keyindex
lrange key start stop
移除:lpop移除第一个元素并获取
rpop移除最后一个元素并获取
lrem key count value移除与value相等的数量为count的,count大于从头部开始,小于从尾部开始数量为绝对值,等于移除全部
设置:lset keyindex value
长度:llen
修剪:lrim keystart stop只保留所选区域元素
集合set相关:
添加:sass keymember1 [member2]
获取:smembers所有
移除:srem keymember1 [member2]
成员量:scard
是否存在:smemberskey member
返回差集:sdiffkey1 [key2]
sdiffstoredestination key1 [key2]并存储到destination中,存在覆盖
返回交集:sinterkey1 [key2]
sinterstoredestination key1 [key2]
返回并集:sunionkey1 [key2]
sunionstoredestination key1 [key2]
有序集合zset相关:
添加:zadd keyscore1 member1 [score2 member2]分数score可重复,排序的一个依据
获取:zrange keystart stop [WITHSCORES] 0 -1表示第一个和最后一个成员,WITHSCORES选项表示一并返回source
zrangebylex key min max [LIMIT offset count]需要分数一直,不然会不准确。- +分别表示最小最大值。LIMIT表示分页。
zrangebyscore key min max[LIMIT offset count]
移除:zrem keymember1 [member2]
zremrangebylex key min max
zremrangebyrank key start stop排名区间
zremrangebyscore key min max分数区间
成员数:zcard所有
zcound key min max指定区间source中的成员数
zlexcount key min max指定区间member中的成员数
索引:zrank keymember
排名:zrevrankkey member
分数:zscore keymember
哈希hash相关:
设置:hset key fieldvalue将哈希表key中的字段field的值设置为value
hsetnx key field value仅在field不存在时设置
hmset field1 value1 [field2 value2]
获取:hget keyfield字段和值
hkeys所有字段
hvals所有值
hmget key field1 [field2]给定字段值
删除:hdel keyfield1 [field2]
是否存在:hexistskey field
数量:hlen
事物相关:
开始:multi
执行:exec
取消:discard
领取专属 10元无门槛券
私享最新 技术干货