NoSQL数据库Redis从入门到没有然后

最近和别人交流,经常听到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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180621G115OD00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券