centos 7下的redis 环境搭建以及C语言使用hiredis访问redis

系统  CentOS7

Redis 官网下载   https://redis.io/download

 

1.下载解压

[root@TestServer-DFJR programs]# /usr/local/programs
[root@TestServer-DFJR programs]# wget http://download.redis.io/releases/redis-4.0.1.tar.gz
[root@TestServer-DFJR programs]# tar xzf redis-4.0.1.tar.gz
[root@TestServer-DFJR programs]# mv redis-4.0.1  redis4    #移动到自己想放置的地方

 

2.编译安装

[root@TestServer-DFJR programs]# cd  /usr/local/programs/redis4

安装(使用 PREFIX 指定安装目录): 

# make PREFIX=/usr/local/programs/redis4 install 
安装完成后,可以看到/usr/local/programs/redis4 目录下有一个 bin 目录,bin 目录里就是 redis 的命令脚本: 

[root@TestServer-DFJR redis4]# ls
00-RELEASENOTES  BUGS          COPYING  INSTALL   MANIFESTO  redis.conf  runtest-cluster   sentinel.conf  tests
bin              CONTRIBUTING  deps     Makefile  README.md  runtest     runtest-sentinel  src            utils
[root@TestServer-DFJR redis4]# 

 

4.执行Redis-server 命令,启动Redis 服务 

[root@TestServer-DFJR redis4]# cd bin
[root@TestServer-DFJR bin]# ./redis-server

注意:这里直接执行Redis-server 启动的Redis服务,是在前台直接运行的(效果如上图),也就是说,执行完该命令后,如果Lunix关闭当前会话,则Redis服务也随即关闭。正常情况下,启动Redis服务需要从后台启动,并且指定启动配置文件。 

 

5.后台启动redis服务

a)首先编辑conf文件,将daemonize属性改为yes(表明需要在后台运行)
vi redis.conf

 

b)再次启动redis服务,并指定启动服务配置文件

bin/redis-server redis.conf

 

6. redis.conf的其他关键配置

 

daemonize yes #以后台daemon方式运行redis
port 6379 #默认端口
bind 127.0.0.1 10.6.30.191 #默认绑定本机所有ip地址,为了安全,可以只监听内网ip
pidfile /var/run/redis_6379.pid #redis以后台运行,默认pid文件路径/var/run/redis.pid
requirepass 123456 #设置redis数据库连接密码

 

 

6.服务端启动成功后,执行redis-cli启动Redis 客户端,查看端口号。

redis-cli -a 123456  #连接redis数据库,注意:-a后面跟redis数据库密码

默认是没有密码的,直接输入

src/redis-cli

 

然后就可以执行redis命令了

 

8.  停止服务器

在客户端里输入  shutdown

退出客户端是  exit

 

9.卸载redis服务

直接把相关目录和文件删除即可

 

10. 设置环境变量

将 Redis 添加到环境变量中: 
# vi /etc/profile 
在最后添加以下内容: 
## Redis env 
export PATH=$PATH:/usr/local/programs/redis4/bin 
使配置生效: 
# source /etc/profile 
现在就可以直接使用 redis-cli 等 redis 命令了: 

源文章出处https://www.cnblogs.com/zsg88/p/8321644.html

C语言使用hiredis访问redis

Hiredis 是Redis数据库的简约C客户端库。它是简约的,因为它只是增加了对协议的最小支持,但是同时它使用了一个高级别的 printf-like API,所以对于习惯了 printf 风格的C编程用户来说,其非常容易使用,而且API中没有明确的绑定每个 Redis 命令。

Github: https://github.com/redis

安装hiredis

编译安装:

 

Copy

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

$ cd hiredis

$ make

$ make install

下面是make install的输出:

 

Copy

mkdir -p /usr/local/include/hiredis /usr/local/include/hiredis/adapters /usr/local/lib cp -pPR hiredis.h async.h read.h sds.h /usr/local/include/hiredis cp -pPR adapters/*.h /usr/local/include/hiredis/adapters cp -pPR libhiredis.so /usr/local/lib/libhiredis.so.0.13 cd /usr/local/lib && ln -sf libhiredis.so.0.13 libhiredis.so cp -pPR libhiredis.a /usr/local/lib mkdir -p /usr/local/lib/pkgconfig cp -pPR hiredis.pc /usr/local/lib/pkgconfig

复制动态链接库到lib:

cp libhiredis.so /usr/lib64 /usr/lib

若是32系统只需要运行:

cp libhiredis.so /usr/lib

还需要更新下动态链接库缓存:

/sbin/ldconfig

ldconfig 命令的用途主要是在默认搜寻目录 /lib 和 /usr/lib 以及动态库配置文件 /etc/ld.so.conf 内所列的目录下,搜索出可共享的动态链接库(格式如lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为 /etc/ld.so.cache ,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,需运行动态链接库的管理命令 ldconfig ,此执行程序存放在/sbin目录下。

ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。

客户端代码

test.c

  1 #include <stdio.h>
  2 #include <hiredis/hiredis.h>
  3 
  4 int main()
  5 {
  6     redisContext* conn = redisConnect("127.0.0.1", 6379);
  7     if(conn->err)   printf("connection error:%s\n", conn->errstr);
  8 
  9     redisReply* reply = redisCommand(conn, "set foo 1234");
 10     freeReplyObject(reply);
 11 
 12     reply = redisCommand(conn, "get foo");
 13 
 14     printf("%s\n", reply->str);
 15     freeReplyObject(reply);
 16 
 17     redisFree(conn);
 18 
 19     return 0;
 20 }

然后:$ gcc test.c -o test -lhiredis

编译是一定要使用-l连接动态库。

-lstack 告诉编译器要链接 lhiredis 库。

运行:

$ ./test 1234

函数原型

redisConnect

redisContext *redisConnect(const char *ip, int port)

说明:该函数用来连接redis数据库,参数为数据库的ip地址和端口,一般redis数据库的端口为6379。

该函数返回一个结构体redisContext

redisCommand

void *redisCommand(redisContext *c, const char *format, ...);

说明:该函数执行命令,就如sql数据库中的SQL语句一样,只是执行的是redis数据库中的操作命令,第一个参数为连接数据库时返回的redisContext,剩下的参数为变参,就如C标准函数printf函数一样的变参。

返回值为void*,一般强制转换成为redisReply类型的进行进一步的处理。

freeReplyObject

void freeReplyObject(void *reply);

说明:释放 redisCommand 执行后返回的 redisReply 所占用的内存。

redisFree

void redisFree(redisContext *c);

说明:释放 redisConnect() 所产生的连接。

参考

1、Redis:安装、配置、操作和简单代码实例(C语言Client端) - CSDN博客
https://blog.csdn.net/hj19870806/article/details/8724907
2、C语言访问redis(hiredis) - CSDN博客
https://blog.csdn.net/sole_cc/article/details/38015765
3、error while loading shared libraries问题解决 - CSDN博客
https://blog.csdn.net/qgd19931120/article/details/50971142
4、ldconfig命令_Linux ldconfig 命令用法详解:动态链接库管理命令
http://man.linuxde.net/ldconfig?mstqrk=qdwrv1

 

出处:http://52fhy.cnblogs.com/

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值