【Redis 基础内容+关键字 01】

一、Redis(Remote DIctionary Server 远程字典服务器)

1、完全开源,用C编写,是一个高性能的(key/value)分布式数据库,基于内存运行,长被称为:数据结构服务器

2、redis与其他key-value缓存产品有一下三个特点

  • redis支持数据的持久层,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
  • redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储
  • redis支持数据的备份,即master-slave模式的数据备份

 二、redis的安装/启动/关闭

---->安装

1、redis官网下载http://redis.cn/安装包

2、将下载后的redis-6.0.6.tar.gz上传到linux的opt目录下

3、在opt目录下解压

4、解压后进入redis目录:cd redis-6.0.6.

5、在redis-6.0.6目录下执行make命令

  运行make命令时出现错误(需要安装gcc)

  yum install gcc-c++    (安装后gcc -v 如果查看版本为4.5.8,此版本太低,需要执行以下命令升级)

  • yum -y install centos-release-scl
  • yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
  • scl enable devtoolset-9 bash
  • echo “source /opt/rh/devtoolset-9/enable” >> /etc/profile
  • gcc -v

6、执行make  (如果出现jemalloc/jemalloc.h:没有那个文件或目录错误)

  执行:运行make distclean之后再make

7、执行make install

8、查看默认安装目录:usr/local/bin    --->包含以下文件

redis-benchmark:性能测试工具,可以在自己本子运行,看看自己本子性能如何(服务启动后执行)
redis-check-aof:修复有问题的AOF文件,rdb和aof后面讲
redis-check-dump:修复有问题的dump.rdb文件
redis-cli:客户端,操作入口
redis-sentinel:redis集群使用
redis-server:Redis服务器启动命令

---->启动

 1、进入redis文件夹内

cd /opt/redis-6.0.6

注意:linux下修改配置文件,一般需要备份初始文件,所以我们需要备份redis.conf文件

[root@bogon redis-6.0.6]# cp redis.conf ../Bak_redis_conf/

2、修改备份的redis.conf文件,将里面的daemonize no 改成 yes,让服务在后台启动

[root@bogon bak_redis_conf]# vi redis.conf 
################################# GENERAL 
# By default Redis does not run as a daemon. Use 'yes' if you need it.
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
daemonize yes

3、进入到redis的默认安装目录,启动修改的redis.conf文件

cd /usr/local/bin/
//启动redis
redis-server /opt/bak_redis_conf/redis.conf 

//登录redis
[root@bogon bin]# redis-cli -p 637

4、连通测试

127.0.0.1:6379> set k1 hello
OK
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379> ping
PONG

5、关闭

单实例关闭:redis-cli shutdown

多实例关闭,指定端口关闭:redis-cli -p 6379 shutdown

 三、redis启动后的基础知识

1、单进程

2、默认16个数据库,类似数组小标从零开始,默认0号库

3、select切换数据库,select 1  -->切换到第二个库

4、dbsize查看当前数据库的key的数量,keys * 查看所有key,keys k? 查看包含k的所有key

5、flushdb清空当前库,flushall清空所有库

6、默认端口6379

四、Redis的五大数据类型

1、String字符串

String是redis最基本的类型,一个key对应一个value,一个redis中字符串value最多可以是512m

String类型是二进制安全的,因此redis的String可以包含任何书库,比如jpg图片或者序列化的对象

2、hash(哈希,类似Java里的map)

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

类似Java里面的Map<String,Object>

3、list(列表)

列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素导列表的头部(z左边)或者尾部(右边),他的底层实际是个链表

4、set(集合)

redis的set是String类型的无序集合,它是通过hashTable实现的

5、zset(sorted set 有序集合)

zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

# 把 list 类 型 key里 的 数 据 导 出 来 :

redis-cli -a Sexyte@2013 -n 2 lrange Access_token 0 -1 > ./Access_token.csv 

# 把 set类 型 key里 的 数 据 导 出 来 :

redis-cli -a Sexyte@2013 -n 2 smembers createOrderToken >csv/createOrderToken.csv 

 四、详解五大类型

1、key 关键字 -->常用

keys * 查看当前库的所有key

exists key的名字,判某个key是否存在

127.0.0.1:6379> exists k1
(integer) 1
127.0.0.1:6379> exists k4
(integer) 0

move key db 移动当前库的key到目标库

ttl key 查看还有多毫秒过期,-1代表永不过期,-2表示已经过期

expire key 秒钟:为给定的key设置过期时间

 type key 查看key是什么类型

 给同一个key先后赋不同的值,后赋的值会覆盖掉之前的值

 2、String类型

单值单value

常用的命令

--> set/get/del/append/strlen (设置/获取/删除/增加/获取长度)

 --> incr/decr/incrby/decrby  一定要是数字才能进行相加

--> getrange 获取指定区间范围内的值,类似between ... and的关系 (从0 到-1表示全部

--> setrange 设置指定区间范围内的值,格式是setrange key值 具体值

 --> setex 设置key和value值并加上有效时间

--> setnx 设置key/value时判断是否存在,存在设置不成功,不存在设置成功

--> mset/mget/msetnx  设置/获取多个key、value

 3、List列表(有序可)

单值多value

-- > lpush /rpush/lrange

 -->lpop/rpop 移除list的value,lpop从左移除,rpop是从右移除

--> llen 列表长度

--> lindex 按照索引下标获取元素(从上到下)

--> lrem 删除N个value

--> ltrim key 开始index 结束index  (截取开始到结束的index内容)

-->del key   删除key

 --> rpoplpush 把第一个列表最右边的value移动到第二个列表的最左边value的左侧

 --> linsert key before/after 值1 值2  在值1的前面/后面插入某个值

 --> lset key index value 按照索引替换值

总结:

  • list是一个字符串链表,left、right都可以插入添加,
  • 如果键不存在,创建新的链表
  • 如果键已经存在,新增内容
  • 如果值全部移除,对应的键也就消失了
  • 链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很低了

4、set集合 (无序不能重复)

单值多value

 --> sadd/smembers/sismember 添加列表/显示列表

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

 --> srem key value 删除集合内的元素

 --> srandmember key count 随机抽取集合内的值

--> spop key 随机出栈

--> smove key1 key2  将key1的某个值赋值给key2

 --> sdiff差集、slnter交集、sunlon并集

5、hash (KV模式不变,但V是一个键值对)

--> hset/hget/hmset/hmget/hgetall/hdel

 --> hlen 长度

--> hexists key 判断key里面某个值是否存在

--> hkeys/hvals 查看所有的key和value

-->  hincrby/hincrbyfloat 整数/小数相加

--> hsetnx 设置值的时候判断是否存在,存在增加失败,不存在增加成功

6、ZSet (sorted set)

在set基础上,加一个score值。之前set是k1 v1 v2 v3,现在zset是k1 score1 v1 score2 v2  (score1 v1 是一对value,则每两个是一个value)

 --> zadd/zrange

 --> zrangebyscore key 开始score 结束score

 

posted @ 2021-05-21 17:51  尘封~~  阅读(159)  评论(0编辑  收藏  举报