redis安装与使用

数据库类型

1、关系型数据库

  • 使用sql语句进行操作
  • 数据存储在磁盘

诸如mysql、oracle、sqlserver、sqlite

2、非关系型数据库

  • 不依赖sql语句
  • 数据存储在内存(存储格式是键值对)
  • 数据可以持久化(存储到磁盘中)

诸如redis(线性工作,工作速度快是由于内部维护了一个队列)、memcached

redis安装

$ wget http://download.redis.io/releases/redis-6.0.6.tar.gz
$ tar xzf redis-6.0.6.tar.gz
$ cd redis-6.0.6
$ make
$ sudo make install

redis启动

启动server:

  • redis-server(使用默认配置文件,绑定本地IP和6379端口)
  • redis-server ./redis.conf(将配置文件拷贝出来修改,在启动时带上配置文件即可,常用于远程访问)

启动client:

  • redis-cli

  • redis-cli -h ip -p port(常用于远程访问)

  • 发送ping,回复pong;发送ping nihao,回复nihao

关闭服务器:

  • shutdown(前提是客户端已经连接上服务器了)

redis配置文件

文件位置:/home/lzy/Documents/diskPro/redis-6.0.6/redis.conf(拷贝出来修改)

设置允许远程访问:

  • bind 127.0.0.1(注释掉绑定的本地ip)

  • protected-mode on(设置远程访问)

port 6379

daemonize no(不是守护进程,默认阻塞,yes启动守护进程,则会在某个目录生成pid文件,里面只有一个pid,即server对应的进程id)

pidfile /var/run/redis.pid(redis以守护进程方式运行时,pid的存放位置)

logfile "./redis.log"(log文件位置,什么都不写则重定向到/dev/null,即垃圾回收站)

dbfilename dump.rdb(数据库镜像备份文件名,还有相应进行数据库镜像的频率)

dir ./(数据库镜像备份文件的路径)

将持久化方式改为aof:

  • appendonly no

  • appendfilename "appendonly.aof"

  • appendfsync everysec

database 16(默认是16个数据库)

redis持久化操作

  • rdb形式(默认方式,在redis启动的目录中生成dump.rdb)

    • 特点:存储的是内存的数据(快照的方式,按照某种频率(见配置文件)做数据存储)
    • 缺点:存储的频率太高,存储效率低;频率太低,同步不及时
    • 优点:数据恢复快
  • aof形式

    • 特点:存储的是命令
    • 缺点:数据恢复用时比较长
    • 优点:数据存储到磁盘效率高,占用磁盘空间小

redis客户端及常用API

http://www.redis.cn/clients.html#c 里面包含语言的客户端,这里选用c的hiredis

下载安装

git clone https://github.com/redis/hiredis.git

make

sudo make install

常用API

见hiredis.h文件中的接口

见examples/example.c文件中借鉴函数用法

  • redisConnect:连接数据库/返回redisContext结构体指针
  • redisCommand:发送请求命令/返回redisReply类型的指针
  • freeReplyObject
  • redisFree

redis数据类型

redis中所有的数据都是键值对(key-value)

  • key:字符串

  • value:字符串/hash/list/set/sortedset类型zset

针对key的操作

  • keys *(列出所有的键key)
  • keys str*
  • key的生存时间
    • expire key seconds(秒)
    • ttl key(查看剩余生存时间)
    • persist key(清除生存时间)
    • pexpire key milliseconds(毫秒)
  • del key1(删除key)
  • rename key newkey
  • type key(获取key的数据类型)

下述均是针对value值进行的操作

string类型常见操作

  • set str1 hello
  • get str1
  • mset str2 233 str3 45
  • keys *
  • mget str1 str2 str3
  • incr str2(自增命令,针对整型字符串)
  • decr str3(自减命令)
  • apend str1 world(字符串拼接)

List类型常见操作

操作过程中,既可以按照队列(先进先出)操作也可以按照栈(先进后出)操作

队列:队头出数据lpop,对尾进数据rpush

栈:只能操作栈顶(rpush/rpop或者lpush/lpop)

可以看作string数组,用作新闻门户网站的新闻标题,同时设置key的生存周期

  • lpush ls1 aaa bbb ccc ddd ee 123
  • lrange ls1 0 -1(0是第一个元素,-1是最后一个元素,-2是倒数第二个元素)
  • rpush ls1 9 8 7 6 5
  • lpop ls1
  • rpop ls1
  • llen ls1(求长度)

Set类型常见操作

无序集合,key对应的value不能重复,常用于求交集并集

  • sadd set1 1 2 3 4 5 5 5 5

  • smembers set1(列出集合中所有元素,1 2 3 4 5,元素值不允许重复)

  • srem set1 1 2 3(从集合中删除)

  • sadd set2 4 5 6 7 8

    sdiff set1 set2(set1-set2)

    sdiff set2 set1(set2-set1)

  • sinter set1 set2(交集)

  • sunion set1 set2(并集)

SortSet类型常见操作

有序集合, (分数-字符串) 结构,按照分数给字符串排序

  • zadd zset1 6 hello 1 world 8 abc
  • zrange zset1 0 -1
  • zrange zset1 0 -1 withscores(升序)
  • zrevrange zset1 0 -1(降序)

Hash类型常见操作

哈希集合,(key:value)结构,能用map的地方就可以用hash

  • hset usr username zhang3

  • hset usr age 32

  • hset usr passwd 123456

  • hget usr username

  • hmset zhang3 sex nan age 32 disp gay

  • hmget zhang3 sex age disp

  • hgetall usr

posted @ 2020-08-25 10:35  代码生财  阅读(330)  评论(0)    收藏  举报