Linux平台redis安装
本文编写时候的测试平台:腾讯云轻量应用服务器
操作系统:ubuntu18.4
- 安装包下载
英文官方: https://redis.io/
中文官方: http://redis.cn/
- 安装
make
sudo make install
- redis中有两个角色
# 服务器 - 启动
redis-server # 默认启动
redis-server confFileName # 根据配置文件的设置启动
# 客户端
redis-cli # 默认连接本地, 绑定了6379默认端口的服务器
redis-cli -p 端口号
redis-cli -h IP地址 -p 端口 # 连接远程主机的指定端口的redis
# 通过客户端关闭服务器
shutdown
# 客户端的测试命令
ping [MSG]
安装完成之后测试验证
- 打开两个终端 先运行服务器 redis-server
- 运行客户端 redis-cli
操作redis的api
hiredis 安装下载
下载地址: http://redis.cn/clients.html#c
解压缩之后 进入源码目录
make && sudo make install
编写测试例程
myredis_test
#include <stdio.h>
#include <hiredis.h>
int main()
{
// 1. 连接redis服务器
redisContext* c = redisConnect("127.0.0.1", 6379);
if (c->err != 0)
{
return -1;
}
// 2. 执行redis命令
void *prt = redisCommand(c, "hmset user userName zhang3 passwd 123456 age 23 sex man");
redisReply* ply = (redisReply*)prt;
if(ply->type == 5)
{
// 状态输出
printf("状态: %s\n", ply->str);
}
freeReplyObject(ply);
// 3. 从数据库中读数据
prt = redisCommand(c, "hgetall user");
ply = (redisReply*)prt;
if(ply->type == 2)
{
// 遍历
for(int i=0; i<ply->elements; i+=2)
{
printf("key: %s, value: %s\n", ply->element[i]->str, ply->element[i+1]->str);
}
}
freeReplyObject(ply);
redisFree(c);
return 0;
}
编译时候的头文件地址
/usr/local/include/hiredis/hiredis.h
编译时候的库文件地址
/usr/local/lib
编译命令
gcc -o myredis myredis.c -I/usr/local/include/hiredis –lhiredis
运行的时候报错
./a.out: error while loading shared libraries: libhiredis.so.0.13: cannot open shared object file: No such file or directory
说明环境变量里面没有动态库的地址
修改 ~/.bash_profile或者/.bashrc或/.bash_profile或系统级别的/etc/profile
添加一下即可
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
source ~/.bash_profile
redis配置文件
redis服务器使用,在源码目录中拷贝redis.conf文件出来
常用的配置
# redis服务器绑定谁之后, 谁就能访问redis服务器
# 任何客户端都能访问服务器, 需要注释该选项
bind 127.0.0.1 192.168.1.100
# 保护模式, 如果要远程客户端访问服务器, 该模式要关闭
protected-mode yes
# reids服务器启动时候绑定的端口, 默认为6379
port 6379
# 超时时长, 0位关闭该选项, >0则开启
timeout 0
# 服务器启动之后不是守护进程
daemonize no
# 如果服务器是守护进程, 就会生成一个pid文件
# ./ -> reids服务器启动时候对应的目录
pidfile ./redis.pid
# 日志级别
loglevel notice
# 如果服务器是守护进程, 才会写日志文件
logfile “” -> 这是没写
logfile ./redis.log
# redis中数据库的个数
databases 16
eids服务器启动时候对应的目录
pidfile ./redis.pid
# 日志级别
loglevel notice
# 如果服务器是守护进程, 才会写日志文件
logfile “” -> 这是没写
logfile ./redis.log
# redis中数据库的个数
databases 16
- 切换 select dbID [dbID == 0 ~ 16-1]