什么是redis?
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。redis是将数据存放到内存中,由于内容存取速度快所以redis被广泛应用在互联网项目中。
为什么用redis?
在使用mysql存储数据时,由于mysql是将数据写入到硬盘中,频繁的读取会导致硬盘的压力大。为了更好的保护硬盘,延长其使用寿命,我们就将一些会大量访问的资源先缓存到redis上,因为redis是将内容存储到内容中读取快,而且redis中数据不会担心丢失问题,丢失了在从MySQL中读取缓存下来即可,这样就减轻了mysql的压力
安装
Liunx版安装步骤
# 下载
wget https://download.redis.io/releases/redis-6.2.7.tar.gz
# 加压
tar -zxvf redis-6.2.7.tar.gz
# 移动并改名
mv redis-6.2.7 /usr/local/redis
# 安装c语言环境
yum install -y gcc
# 编译
make
# 清理make命令的缓存
make distclean
# 安装
make install
# 安装并指定安装目录
make install PREFIX=/usr/local/redis
# 启动服务和客户端
/usr/local/redis/bin/redis-server
/usr/local/redis/bin/redis-cli
启动缺点:以上方式启动会占用命令窗口,所以不建议使用
推荐以下方式:
第一步:进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下
cp /usr/upload/redis-3.0.0/redis.conf /usr/local/redis/bin
第二步:修改/usr/java/redis/bin下的redis.conf,将daemonize由no改为yes
第三步:启动
./redis-server redis.conf
关闭
到redis/bin目录下执行如下命令
./redis-cli -p 端口号 shutdown
数据类型
默认16个数据库
一个redis实例可以包括多个数据库,客户端可以指定连接某个redis实例的哪个数据库,就好比一个mysql中创建多个数据库,客户端连接时指定连接哪个数据库。
一个redis实例最多可提供16个数据库,下标从0到15,客户端默认连接第0号数据库,也可以通过select选择连接哪个数据库
注意:redis不支持修改数据库的名称,只能通过select 0、select 1…选择数据库。
切换数据库命令
select index命令切换数据库 (0-15)
常用基本命令
dbsize查看当前数据库的key的数量
flushdb:清空当前库
Flushall;清空全部库
其它说明
统一密码管理,16个库都是同样密码,要么都OK要么一个也连接不上
Redis索引都是从零开始0-15
redis五种数据类型
字符串类型
Map<String,String>
字符串类型是编程语言和应用程序中最常见和最有用的数据类型,也是Redis的基本数据类型之一,事实上,Redis中所有键都必须是字符串。
语法set key value 存放key-vulue
get key 获取key的值
getset name new_cxx 设置值,返回旧值
mset key1 v1 key2 v2 批量设置
mget key1 key2 批量获取
setnx key value 不存在就插入(set if not exists) 分布式锁
incr age 递增
incrby age 10 递增
decr age 递减
decrby age 10 递减
strlen 长度
getrange name 0 -1 字符串分段 0 -1是全部 0 -2 ==n-1
setrange key index value 从index开始替换value
incrbyfloat 增减浮点数
append 追加
object encoding key 得到key 的类型 string里面有三种编码
int 用于能够作用64位有符号整数表示的字符串
embstr 用于长度小于或等于44字节 Redis3.x中是39字节,这种类型的编码在内存使用 时性能更好
raw 用于长度大于44字节的
list数据类型
Map<String,List>
列表是应用我只是应该程序开发中非常有用的数据类型之一,列表能存在一组对象,因此它也可以被用于栈或者队列,在Redis中,与键相关的联的值可以是字符串组成的列表,Redis中的列表更像是数据结构中的双向链表。
语法lpush key values l=left r =rigth
lpush mylist a b c 左插入
rpush mylist x y z 右插入
lrange mylist 0 -1 取出数据集合 0 -1是取出所有 0 1取第一个和第二个
lpop mylist 弹出集合最后一个元素 弹出之后就没有了哦
rpop mylist 弹出第一个元素 弹出之后就没有了哦
lrem mylist count value 删除
|-COUNT 的值可以是以下几种:
|--count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。
|--count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。
|--count = 0 : 移除表中所有与 VALUE 相等的值。
lindex mylist 2 指定索引的值
llen mylist 长度
lset mylist 2 n 索引设值
ltrim mylist 0 4
|--对一个列表进行修剪(trim),就是说,让