Redis介绍

Redis内存数据库


背景

随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈。

Redis是什么?

Redis是一个高性能的,开源的,C语言开发的,键值对存储的nosql数据库

NoSql:not only sql,泛指非关系型数据库(Redis/MongDB/Hbase Hadoop)

关系型数据库:MySQL/Oracle/SqlServer

Redis特性
  • 支持数据的持久化,可以将内存中存储的数据保存到磁盘中,重启的时候可以再次加载进行使用
  • 不仅支持key-value类型的数据,同时提供List,set等数据类型
  • 支持数据备份
Redis有什么错用

主要作用:快速存取

Redis怎么用?

官网:https://redis.io/

命令地址:http://doc.redisfans.com/

安装及启动

Ubuntu下

# 安装
sudo apt-get install redis-server

# 修改配置
sudo vim /etc/redis/redis.conf
# 将daemonize no 改为 daemonize yes 保存退出

# 打开服务
sudo service redis start

# 关闭服务
sudo service redis stop

# 开启客户端
redis-cli

windows

Redis官网并没有提供Windows的下载,不过我们可以使用微软官方的移植版本(https://github.com/MicrosoftArchive/redis/releases)。

# 开启服务
redis-server

# 开启客户端
redis-cli
配置文件redis.conf
# Ubuntu中
/etc/redis/redis.conf

# windows中
# 安装路径下的redis.windows.conf

daemonize:是否已后台进程运行,默认是no。windows下不支持修改,linux下可以改为yes,这样服务端和客户端可以在一个终端窗口中运行。

pidfile:如果以后台进程运行,则需指定一个pid,默认为/var/run/redis.pid。window下不支持修改

bind:绑定主机,默认是127.0.0.1(本机)

port:监听端口,默认是6379

databases:可用数据库数,默认为16,从0开始

save<seconds><changes>:指出在多长时间内,达到了多少次更新操作,就将数据同步到数据文件。如:
save 900 1     900秒内至少有1个key被改变
save 60 10000  60秒内至少有10000个key改变就同步到数据文件

dbfilename:本地数据库名,默认dump.rdb

dir:本地数据库存放路径

slaveof:<masterip><masterport> 当本机为从服务时,设置主服务的IP及端口

masterauth: <master-password> 当本机为从服务时,设置主服务的连接密码

requirepass 连接密码

maxclients: 最大客户端连接数,默认不限制

maxmemory <bytes>:设置最大内存,达到最大内存设置后,Redis会先尝试清除已到期或即将到期的Key,当此方法处理后,任到达最大内存设置,将无法再进行写入操作。

内容参考自:https://www.jianshu.com/p/e90317668ae2

更详细内容可参考:https://www.cnblogs.com/kreo/p/4423362.html

简单操作

windows下不区分大小写,linux中区分,可以按tab键补齐

DBSIZE # 查看当前数据库key的数量
KEYS * # 查看key的内容
FLUSHDB # 清空当前数据库的key的数量
FLUSHALL # 清空所有库的key(慎用)
exists key # 判断key是否存在

Redis五大数据类型

string/list/set/hash/zset
redis-string

string是redis最基本的类型,一个key对应一个value,string可以包含任何数据,最大不能超过512M。

set # 设置值
set name shell # key为name,value为shell

get # 获取值
get name # 通过key获取value

mset # 设置多个值
mset name1 shell age 18 language python # 设置多个值,需满足key-value,key-value,...

mget # 获取多个值
mget name1 age language

del # 删除
del name 

strlen # 返回字符串长度
strlen name1 # name1对象的长度

append # 添加字段
append age 0 # age值会变成'180',因为这是字符串的拼接

expire # 设置过期时间
setex name ella 3 # setex=set+expire,ella这个名字会在3秒后消失

incr # 增加
incr num # 没执行一次num就会+1,如果没有num,则创建一个num,值为1

decr # 减少
decr num # 每次减1

incrby # 指定增加多少
incrby num 6 # num加6

decrby # 指定减少多少
decrby num 2

getrange # 获取指定区间范围内的值
getrange name1 0 -1 # 获取name1的全部值
getrange name1 0 2 # 获取1到3个字符,即she
list(单值多value)

列表是简单地字符串列表,按照顺序排列,可以从头部(左边)添加元素,也可以从尾部(右边)添加。它的底层实际是个链表。

lpush/rpush/lrange # 从左/从右/获取指定长度
lpush li1 1 2 3 4 5 # 因链表的特性,该种方式显示结果为倒序
rpush li2 1 2 3 4 5 # 显示结果正序
lrange li1 0 -1 # 获取li1全部值'5 4 3 2 1'

lpop/rpop # 移除最左/最右
lpop li # 删除5
rpop li # 删除1

index # 按照索引下标获取元素(如li,从左到右---0到4)
lindex li 0 # 获取5

llen # 求列表长度
llen li # 3 

lrem key # 删除N个value
rpush li2 1 1 2 2 3 4 2 5 6 # 添加测试数据
lrem li2 2 2 # 删除两个2,li变为1 1 3 4 2 5 6

ltrim # 截取指定范围的值后赋值给key
ltrim li2 0 4 # 获得1 1 3 4 2

rpoplpush list1 list2 # 将list1中最后一个压入list2
rpoplpush li2 li

lset key index value # 将key中指定一位替换
lset li2 0 -1 # 将li2中第一位替换为-1

linsert key before/after k_value value# 在key中某个值前/后插入新的value
linsert li2 after -1 0 # 在li2的-1后插入0,注意这里的0不是下标索引
Hash

hash是一个键值对集合

hash是一个string类型的field和value的映射表,hash特别适合存储对象

hash可以简单理解为key key:value

设值/取值/设值多个值/取多个值/取全部值/删除值
hset user id 11
hget user id 
hmset customer id 11 name juran age 26
hmget customer id name age      只返回相应的值
hgetall   customer              返回全部
hdel user id   删除id

求哈希长度 
hlen customer 

hexists customer name ---- 在key里面的某个值
存在返回1 ,不存在返回0

返回对象的键和值
hkeys students
hvals students

set(集合)

set是string类型的无需集合

sadd/smembers/sismember ---- 添加/查看集合/查看是否存在
sadd set01 1 2 2 3 3  去掉重复添加
smembers set01   得到set01
sismember set01 1  如果存在返回1  不存在返回0

scard ---- 获取集合里面的元素个数
scard set01   

srem ---- 删除集合中元素
srem set01 3
SMEMBERS set01   3已经被删除掉

spop ---- 随机出栈
spop set01

sadd set03 x y z 
smove set01 set03 2  将set01中的2移动到set03中

sadd set01 1 2 3 4 5
sadd set02 1 2 3 a b
差集
SDIFF set01 set02   返回 4 5 在第一个set中不在第二个set中
交集
SINTER set01 set02   返回 1 2 3
并集
SUNION set01 set02  返回set01 set02 中的值去掉重复

Zset(有序集合)

zadd zset01 60 v1 70 v2 80 v3 90 v4 100 v5
zrange zset01 0 -1 
带分数返回   withscores

zrangebyscore key start end----根据开始结束来取值
zrangebyscore zset01 60 70

zrangebyscore zset01 60 (90   表示不包含90

zrangebyscore zset01  60 90  limit  1 2 从第一条开始截取2条

zrem key value---- 某score下对应的value值,作用是删除元素
zrem zset01 v1 

zcard   求zset01 总条数
zcount  zset01 60 90  求60-90个数
zrank   zset01  v2   返回1  返回对应下角标,从0开始
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值