Redis简单入门
2017-11-20 19:00
441 查看
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。
Redis官网
参考:Redis百度百科
注:redis需要依赖tcl,make test会报错:You need tcl 8.5 or newer in order to run the Redis test
解决方法:安装tcl
注:daemonize 为no时无法配置集群模式
启动redis-server需指定配置文件
启动redis-cli
设置redis-server开机启动
关闭redis-server
最大存储512MB数据
string类型是二进制安全的,可以为任何数据
注:二进制安全
redis编码解码只会发生在客户端,服务器与硬盘存储的都是二进制数据,不用频繁编解码,执行速度快,不会出现乱码。
而关系型数据库如mysql,在数据插入和查询时服务器与客户端及硬盘间存在大量编解码,执行速度慢,容易出现乱码。
按照插入顺序排序
在列表的头部或者尾部添加元素
元素为string类型
元素具有唯一性,不重复
5 zset(sorted set)有序集合
元素为string类型
元素具有唯一性,不重复
每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
元素的score可以相同
更多命令介绍:http://redis.cn/commands.html
比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
主服务器配置:
从服务器配置:
选择使用hiredis
编译:g++ redis.c -l hiredis
执行:./a.out
程序执行了set words_in_redis Hello_World并从数据库返回words_in_redis的值
参考:
http://hahaya.github.io/operator-redis-under-linux/
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。
Redis官网
参考:Redis百度百科
安装
wget http://download.redis.io/releases/redis-4.0.2.tar.gz tar zxf redis-4.0.2.tar.gz cd redis-4.0.2/ make make test sudo make install #默认安装在/usr/local/bin目录下 #也可以自定义安装目录 sudo make PREFIX=/usr/local/redis install
注:redis需要依赖tcl,make test会报错:You need tcl 8.5 or newer in order to run the Redis test
解决方法:安装tcl
sudo yum install tcl
配置及启动与关闭
文件redis.conf为配置文件bind 127.0.0.1 #绑定ip port 6379 #默认端口 daemonize no|yes #是否以守护进程运行,需修改为yes以守护进程运行
注:daemonize 为no时无法配置集群模式
启动redis-server需指定配置文件
./redis-server ../redis.conf #常将配置文件放在/etc/redis目录下,对应指定配置文件路径即可
启动redis-cli
./redis-cli #默认启动本机127.0.0.1:6379 #或 ./redis-cli -h 127.0.0.1 -p 6379 #指定ip地址与端口号
设置redis-server开机启动
vim /etc/rc.local //添加 /redis安装路径/redis-server /配置文件路径/redis-conf sudo chmod +x /etc/rc.d/rc.local #需添加执行权限,否则boot时不执行
关闭redis-server
./redis-cli shutdown #正常关闭,否则容易造成数据丢失
5种数据类型及对应常用命令
1.string
string是redis最基础的类型最大存储512MB数据
string类型是二进制安全的,可以为任何数据
注:二进制安全
redis编码解码只会发生在客户端,服务器与硬盘存储的都是二进制数据,不用频繁编解码,执行速度快,不会出现乱码。
而关系型数据库如mysql,在数据插入和查询时服务器与客户端及硬盘间存在大量编解码,执行速度慢,容易出现乱码。
设置单个键值 SET key value 设置键值及过期时间,以秒为单位 SETEX key seconds value 设置多个键值 MSET key value [key value ...] 根据键获取值,如果不存在此键则返回nil GET key 根据多个键获取多个值 MGET key [key ...] 运算 将key对应的value加1 INCR key 将key对应的value加整数 INCRBY key increment 将key对应的value减1 DECR key 将key对应的value减整数 DECRBY key decrment 追加值 APPEDN key value 获取值长度 STRLEN key
查找键,参数支持正则 KEYS pattern 判断是否存在,如果存在返回1,不存在返回0 EXISTS key [key ...] 查看键对应的value的类型 type key 删除键及对应的值 del key 设置过期时间,以秒为单位,创建时没有设置过期时间则一直存在,知道使用del移除 expire key seconds 查看有效时间,以秒为单位 TTL key
2.hash
hash用于存储对象,对象的格式为键值对设置单个属性 hset key field value 设置多个属性 hmset key field value [field value] 获取一个属性的值 hget key field 获取多个属性的值 hmget key field [field ...] 获取所有属性和值 hgetall key 获取所有的属性 hkeys key 返回包含属性的个数 hlen key 获取所有值 hvals key 判断属性是否存在 hexists key field 删除属性及值 hdel key field [field] 返回值的字符串长度 hstrlen key field
3.list
列表的元素类型为string按照插入顺序排序
在列表的头部或者尾部添加元素
在头部插入数据 LPUSH key value [value ...] 在尾部插入数据 RPUSH key value [value ...] 在一个元素的前|后插入新元素 LINSERT key BEFORE|AFTER pivot value 设置指定索引的元素值 索引是基于0的下标 索引可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素 LSET key index value 移除并且返回 key 对应的 list 的第一个元素 LPOP key 移除并返回存于 key 的 list 的最后一个元素 RPOP key 返回存储在 key 的列表里指定范围内的元素 start 和 end 偏移量都是基于0的下标 偏移量也可以是负数,表示偏移量是从list尾部开始计数,如-1表示列表的最后一个元素 LRANGE key start stop
4. set
无序集合元素为string类型
元素具有唯一性,不重复
添加元素 SADD key member [member ...] 返回key集合所有的元素 SMEMBERS key 返回集合元素个数 SCARD key
5 zset(sorted set)有序集合
元素为string类型
元素具有唯一性,不重复
每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序
元素的score可以相同
返回指定范围内的元素 ZRANGE key start stop 返回元素个数 ZCARD key 返回有序集key中,score值在min和max之间的成员 ZCOUNT key min max 返回有序集key中,成员member的score值 ZSCORE key member
更多命令介绍:http://redis.cn/commands.html
主从配置
redis支持集群。 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构比如,将ip为192.168.1.10的机器作为主服务器,将ip为192.168.1.11的机器作为从服务器
主服务器配置:
bind 192.168.1.10 #主服务器ip
从服务器配置:
bind 192.168.1.11 #从服务器ip slaveof 192.168.1.10 6379 #端口必须写
安装hiredis
使用C/C++操作Redis,需要安装C/C++ Redis Client Library选择使用hiredis
git clone https://github.com/redis/hiredis cd hiredis make sudo make install(复制生成的库到/usr/local/lib目录下) sudo ldconfig /usr/local/lib
C/C++操作Redis
#include <iostream> #include <string> #include <hiredis/hiredis.h> int main(int argc, char **argv) { struct timeval timeout = {2, 0}; //2s的超时时间 //redisContext是Redis操作对象 redisContext *pRedisContext = (redisContext*)redisConnectWithTimeout("127.0.0.1", 6379, timeout); if ( (NULL == pRedisContext) || (pRedisContext->err) ) { if (pRedisContext) { std::cout << "connect error:" << pRedisContext->errstr << std::endl; } else { std::cout << "connect error: can't allocate redis context." << std::endl; } return -1; } //redisReply是Redis命令回复对象 redis返回的信息保存在redisReply对象中 redisReply *pRedisReply = (redisReply*)redisCommand(pRedisContext, "set words_in_redis Hello_World"); //执行set命令 std::cout << pRedisReply->str << std::endl; //当多条Redis命令使用同一个redisReply对象时 //每一次执行完Redis命令后需要清空redisReply 以免对下一次的Redis操作造成影响 freeReplyObject(pRedisReply); pRedisReply = (redisReply*)redisCommand(pRedisContext, "get words_in_redis"); std::cout << pRedisReply->str << std::endl; return 0; }
编译:g++ redis.c -l hiredis
执行:./a.out
程序执行了set words_in_redis Hello_World并从数据库返回words_in_redis的值
参考:
http://hahaya.github.io/operator-redis-under-linux/
相关文章推荐
- .Net Core使用Redis的一个入门简单Demo
- redis简单运用,数据类型,适合入门
- redis使用-2-简单入门
- redis入门--简单命令
- Redis简单入门
- 关于Redis中缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等概念的入门及简单解决方案
- spring 结合 Redis 例子,简单入门例子
- spring 结合 Redis 例子,简单入门例子
- Redis简单入门一
- redis简单入门介绍
- Redis入门简单操作
- 【redis】——简单入门之安装
- Redis简单入门六——通过事务操作有序集合(sorted set)
- redis入门--简单事务
- Redis入门一:redis简单介绍和虚拟机下的安装
- redis 安装及简单入门
- redis入门简单的安装和测试
- Redis简单入门
- redis入门和外网访问linux上的redis及简单demo
- spring 结合 Redis 例子,简单入门例子