使用OC实现redis客户端

应用场景:
公司项目中需要实时更新位置坐标点,从iPhone手机客户端用redis将坐标点实时传输给redis数据库。

实现步骤:
1.从github上下载RedisKit,眼已插好,请传送:https://github.com/dizzus/RedisKit
2.在本地新建项目newProject,将github上下载的RedisKit文件中的三个子文件夹Hiredis、PromiseKit、RedisKit拖拽到newProject中

2261629-07976217f4a7d503.png
  1. 编译newProject工程(command + B),报错提示修改,将CocoaPromise.h文件中的#import <Cocoa/Cocoa.h> 改为#import <Foundation/Foundation.h>
2261629-33cafb558818c82e.png

4.newProject代码配置,直接在Viewcontroller.m中替换如下代码

#import "ViewController.h"
#import "CocoaRedis.h"
@interface ViewController ()
//主机
@property(nonatomic,strong)NSString * host;
//端口号
@property(nonatomic,assign)int port;
//连接密码
@property(nonatomic,strong)NSString * yourPassword;
@property(nonatomic,strong)NSString * key;
@property(nonatomic,strong)NSString * value;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
CocoaRedis *redis = [CocoaRedis new];
// Connect to server
[[[[redis connectWithHost:_host port:_port] then:^id(id value) {
return [redis auth: _yourPassword];
}] then:^id(id value) {
// 关于rpush方法是试出来的 看服务端的需要  这个其实也没弄明白
// 关于参数 公司项目用的是key是一个字符串@"order_1234" value是@"[114.00000,22.00000]" 这样的格式
return [redis rpush:_key value:_value];
}] catch:^id(NSError *err) {
NSLog(@"Error: %@", err);
return nil;
}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end

Swift版本基本代码实现(2020年11月20日补充)
1.桥接文件中

#import "CocoaRedis.h"

2.controller中

//基本配置
/** redis数据库 地址 */
let redisHost = "api.yoy.com"
/** redis数据库 端口号 */
let redisPoint: Int32 = 9808
/** redis数据库 密码 */
let redisPassWord = "pta.cn@2"
/** redis数据库 单条数据过期时间 */
let expiredTime = 24 * 60 * 60 * 1000

//类的创建
    private lazy var redis = CocoaRedis()

  /** 上传 redis数据库 当前位置 */
    private func updateLocationInRedisData() {
        
        let jsonDic = ["cityCode" : UserModel.shared.cityCode ?? "",
                       "address" : UserModel.shared.formattedAddress ?? "",
                       "lat" : UserModel.shared.latitude ?? "",
                       "lon" : UserModel.shared.longitude ?? "",
                       "timestamp" : Date().timeIntervalSince1970] as [String : AnyObject]
        let data = try? JSONSerialization.data(withJSONObject: jsonDic, options: [])
        let jsonStr = String.init(data: data!, encoding: .utf8)
        let keyStr = "youyou_supervisory_\(UserModel.shared.id)"
        
        redis?.connect(withHost: redisHost, port: redisPoint)
            .then({ (value) -> Any? in return self.redis?.auth(redisPassWord) })
            .then({ (value) -> Any? in return self.redis?.pexpire(keyStr, milliseconds: expiredTime)})
            .then({ (value) -> Any? in return nil })
            .then({ (value) -> Any? in

                self.redis?.select(1)
                return self.redis?.rpush(keyStr, value: jsonStr)
            })
            .catch({ (error) -> Any? in

                print("Redis Error: \(error)")
                return nil
            })

        redis?.quit()
    }

5.关于redis具体的介绍:http://www.redis.com.cn/

最终要感谢iOS组长大力支持和最终突破,感谢github贡献者написал(а) Дмитрий Бахвалов给我问题的及时回复。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容