[ecmagent][redis学习][1初识redis] redis安装+redis快速教程+python操作redis
# redis安装
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# redis安装教程 -- 服务器(ubuntu)安装redis服务 sudo apt-get install redis-server -- 源码安装 -- $ wget http://download.redis.io/releases/redis-4.0.6.tar.gz $ tar xzf redis-4.0.6.tar.gz $ cd redis-4.0.6 $ make # 编译,需要先安装gcc $ make install # 安装成功之后,会自动将可执行文件(6个)拷贝到/etc/init.d/里面 -- 安装成功之后 -- 输入命令redis-server,启动redis服务 -- 测试,进入自带的redis客户端: 输入命令redis-cli -- 输入ping,会返回PONG,说明安装成功 # redis配置教程 http://blog.csdn.net/qq_30242609/article/details/52913145 -- redis配置访问密码 -- redis设置允许远程访问 # bind 127.0.0.1 -- redis设置开机自启动(未做) # redis检测 #检测后台进程是否存在 ps -ef |grep redis #检测6379端口是否在监听 netstat -lntp | grep 6379 #使用`redis-cli`客户端检测连接是否正常 ./redis-cli 127.0.0.1:6379> keys * (empty list or set) 127.0.0.1:6379> set key "hello world" OK 127.0.0.1:6379> get key "hello world" # redis 启动 - 命令启动 redis-server - 配置文件启动 修改配置文件:redis.conf (/root/redis_dir/redis-4.0.6/redis.conf) #修改daemonize为yes,即默认以后台程序方式运行(还记得前面手动使用&号强制后台运行吗)。 daemonize no #可修改默认监听端口 port 6379 #修改生成默认日志文件位置 logfile "/home/futeng/logs/redis.log" #配置持久化文件存放位置 dir /home/futeng/data/redisData -- 配置启动 redis-server /root/redis_dir/redis-4.0.6/redis.conf -- 打开redis客户端 redis-cli -p 6379 >> ping hello # redis关闭 - redis-cli >> shutdown # 查看是否已经关闭 - netstat -lntp |grep 6379
#2 redis快速教程
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# reids操作教程http://try.redis.io/ #1 value字符串数据 - 增加一条字符串记录ranking:category为key, "hello"为value set ranking:category "hello" - 获取ranking:category的值 get ranking:category #2 value整数数据 - 增加一条数字记录 set views 10 - 自增views incr views # 得到结果为11 - 删除key,value # 只是将views的值清0,而已 del views 此时还可以incr views # 客户端运行结果展示 127.0.0.1:6379> set views 10 OK 127.0.0.1:6379> incr views (integer) 11 127.0.0.1:6379> del views (integer) 1 127.0.0.1:6379> incr views (integer) 1 127.0.0.1:6379> #3 value列表数据 增加一条列表记录,(value为列表), redis支持列表,rpush, lpush,llen, lrange, lpop,rpop - 从列表头部插入数据 lpush friends "lzp" , key为friends, value为列表,“lzp"为列表的元素 - 从列表尾部插入数据 rpush friends "dd" - 对列表切片 lrange friends 0 -1 # 从头到尾 lrange friends 0 2 - 计算列表的长度llen llen friends - 从列表头部出栈,并获取该元素 lpop friends - 从列表尾部出栈,并获取该元素 rpop friends # 客户端展示 127.0.0.1:6379> lpush friends "lzp" (integer) 1 127.0.0.1:6379> rpush friends "lzp" (integer) 2 127.0.0.1:6379> rpush friends "dd" (integer) 3 127.0.0.1:6379> 127.0.0.1:6379> lrange friends 0 -1 1) "lzp" 2) "lzp" 3) "dd" 127.0.0.1:6379> llen friends (integer) 3 127.0.0.1:6379> lpop friends "lzp" 127.0.0.1:6379> rpop friends "dd" 127.0.0.1:6379> # value为set(无序,且元素只能出现一次)add, remove, ismember, members, union(求并集) -- sadd, srem, sismember, smembers, sunion - 往set增加元素 sadd supervisors "fligh" sadd supervisors "lzp" - 从set删除某个元素 srem supervisors "lzp" - 判断是否为set的成员, 1表示是,0表示不是 sismember supervisors "lzp" - 得到set的所有元素 smembers supervisors - 求两个set的并集 sadd set1 "lzp" sadd set1 "wy" sadd set2 "hr" sunion set1 set2 # value为有序集合sorted set; sorted set有 key, value, score, 普通的set 有key ,value - 往sorted set添加数据 zadd student 1992 "alen" # 1940就是score, 这里是出生年份 zadd student 1990 "lzp" zadd student 1991 "wy" zadd student 1988 "ww" - 获取student的数据, zrange student 0 -1 # 客户端练习 127.0.0.1:6379> zadd student 1992 "alen" (integer) 1 127.0.0.1:6379> zadd student 1989 "lzp" (integer) 1 127.0.0.1:6379> zadd student 1990 "wenyi" (integer) 1 127.0.0.1:6379> zadd student 1970 "ww" (integer) 1 127.0.0.1:6379> zrange student 0 -1 1) "ww" 2) "lzp" 3) "wenyi" 4) "alen" 127.0.0.1:6379> # hash --->字符串和value的映射,比如name 和“liuzhipeng"的映射, age 和 13的映射, email 和”liucpliu@sina.cn"的映射 --格式 hset key string value hset user:1000 name "liuzhipeng" hset user:1000 age 18 hset user:1000 email "liucpliu@sina.cn" -- 一次性插入数据 hset user:1001 name "wenyi" age 20 email "ww@sina.cn" -- 获取用户的所有信息 127.0.0.1:6379> hgetall user:1000 1) "name" 2) "lzp" 3) "age" 4) "20" 5) "email" 6) "liucpliu@sina.cn" -- 获取用户的某部分信息 127.0.0.1:6379> hget user:1000 name "lzp" 127.0.0.1:6379> hget user:1000 email "liucpliu@sina.cn" -- hash里面数字自增 hincrby user:1000 age 1 hincrby user:1000 age 2
#3 将redis作为服务
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1、配置服务脚本 # step1 redis源码目录下有个utils目录,里面有redis_init_script文件,将其拷贝到/etc/init.d/目录下,并重名为redisd sudo cp utils/redis_init_script /etc/init.d/redisd # step2 修改该文件 sudo vim /etc/init.d/redisd # redisd REDISPORT=6379 EXEC=/usr/local/redis/bin/redis-server CLIEXEC=/usr/local/redis/bin/redis-cli PIDFILE=/var/run/redis_${REDISPORT}.pid CONF="/etc/redis/${REDISPORT}.conf" 2、配置文件 # setp1 源码根目录下有个redis.conf的配置文件,复制并修改名称,注意这个名称和上面的/etc/redis/${REDISPORT}.conf的配置对应。 sudo mkdir /etc/redis sudo cp redis.conf /etc/redis/6379.conf # step2 打开文件修改的内容如下: #设置后台运行 daemonize yes #设置log文件路径 logfile /vagrant_data/var/log/redis/redis-server.log #设置持久化文件存放路径 dir /vagrant_data/var/lib/redis 注意:上面的几个目录是没有的,需要事后创建文件夹 # step3 sudo mkdir -p /vagrant_data/var/log/redis sudo mkdir -p /vagrant_data/var/lib/redis 3、使用update-rc.d注册服务 #设置服务脚本有执行权限 sudo chmod +x /etc/init.d/redisd #注册服务 cd /etc/init.d/ sudo update-rc.d redisd defaults 4、服务常用命令 #启动Redis服务 sudo service redisd start #关闭服务 sudo service redisd stop #重启服务: sudo service redisd restart 5、排错 上面设置的服务不一定能正常启动,通常可以使用/etc/init.d/redisd start运行,然后进去/var/log/redis/目录下查看日志来排除错误,这个路径就是服务脚本设置的路径。 参考: http://blog.csdn.net/softwave/article/details/53838194