Redis
特点
- Nosql中的键值对非关系型数据库是分布式缓存中间件
- 高性能读取
- 高可用
- 存数据,做缓存
- 单线程
分布式缓存
- 提升读取速度性能
- 分布式缓存
- 为数据库降低查询压力
- 跨服务器缓存
- 内存式缓存
Redis安装
- 从https://redis.io 下载 并上传到服务器
- 解压进入解压目录
- yum install gcc-c++
- make
- 完成后出现 It's a good idea to run 'make test'
- make install
- mkdir /usr/local/redis -p
- cp redis.conf /usr/local/redis
- cd /usr/local/redis
- mkdir workspace
- 修改 redis.conf
- bind 0.0.0.0
- daemonize yes 启动后是在前台运行no 还是后台运行yes
- dir /usr/local/redis/workspace 工作空间 必须指名
- requirepass 123456 密码
- 进入当前文件下面的utils目录找到redis_init_script脚本文件
- cp redis_init_script /etc/init.d/
- cd /etc/init.d/ 修改脚本文件
- chmod 777 redis_init_script
- ./redis_init_script start 注意服务器需要配置端口开放
- ./redis_init_script stop 关闭redis
- chkconfig redis_init_script on 设置开机自启
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.
### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFO
#chkconfig: 22345 10 90
#description: Start and Stop redis
REDISPORT=6379 # 启动端口号
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/usr/local/redis/redis.conf"
case "$1" in
start)
if [ -f $PIDFILE ]
then
echo "$PIDFILE exists, process is already running or crashed"
else
echo "Starting Redis server..."
$EXEC $CONF
fi
;;
stop)
if [ ! -f $PIDFILE ]
then
echo "$PIDFILE does not exist, process is not running"
else
PID=$(cat $PIDFILE)
echo "Stopping ..."
$CLIEXEC -a "123456" -p $REDISPORT shutdown
while [ -x /proc/${PID} ]
do
echo "Waiting for Redis to shutdown ..."
sleep 1
done
echo "Redis stopped"
fi
;;
*)
echo "Please use start or stop as first argument"
;;
esac
redis 命令
- redis-cli 进入连接
- auth 123456 输入密码
- del name 打印(integer) 1 表示删除成功
- ttl name 打印(integer) -1 表示永不过期 -2 表示过期
- expire name 30 表示30秒后过期
- keys * 查看所有键(生产上不要用) keys a* 以a开头 keys *a 以a结尾
- type key 查看key的类型
- flushdb 清空当前库
- flushall 清空所有库
- clear 清空控制台
- redis-cli -a 123456 ping 返回pong 检查redis是否开启
- select 1 redis默认16个库 切换到库1 每个数据库数据不共享 默认使用0
redis 数据类型
-
string
- set name zhangsan [key:name value:zhangsan]
- setnx name lisi 如果存在key不会设置成功
- get name 打印zhangsan
- set name zhangsan ex 10 设置key-value 有效期10秒
- strlen name 查看字符串长度
- append name 123 会在name后面拼接
- mset key1 aa key2 bb 设置多个key-value msetnx同理
- mget key1 key2 获取多个值
- incr age 累加 先set age 12 打印(integer) 13
- decr age 累减 打印(integer) 12
- incrby age 10 打印(integer) 22 设置累加的值
- decrby age 10 打印(integer) 12 设置累减的值
- getrange name 0 -1 截取字符串 start end 打印"zhangsan123" getrange name 0 7 打印"zhangsan"
- setrange name 1 abc 用abc替换值下标从1开始的3个值 查看name 为 "zabcgsan123"
-
hash
- hset user name zhangsan
- hget user name 打印"zhangsan"
- hmset user name zhangsan age 18 hmset 设置多个key-value
- hmget user name age 可以查询name和age两个值
- hgetall user 打印所有key-value
- hlen user 查看user里面包含多少属性
- hkey user 打印user里面所有key
- hvals user 打印user里面所有value
- hincrby user age 3 打印(integer) 21
- hincrbyfloat user age 2.2 打印"23.2"
- hexists user age 查看属性是否存在 1存在 0返回
- hdel user name 删除属性
-
list(允许元素重复)
- lpush list1 a b c d e 从左边开始放
- lrange list1 0 -1 打印 "a","b","c","d","e"
- rpush list2 a b c d e 从右边开始放 从e开始插入
- del list1 删除
-
set(不允许元素重复)
- sadd set a b c a a 只会放入a b c三个
- smembers set 打印a b c 查看set中的元素
- scard set 查看set中元素数量 打印3
- sismember set a 判断a是否在set集合中 1在 0不在
- srem set a 删除元素
- spop set 出栈(默认一个)
- spop set 2 出栈(把两个出栈)
- srandmember set 2 从set中随机获取两个元素
- smove set1 set2 a 把a从set1移动到set2中
- sdiff set1 set2 区差集(set1中有 set2中没有)打印 1 2 (如果set1中有元素1、2、3、4、5。set2 有3、4、5、6、7)
- sinter set1 set2 取交集 打印3、4、5
- sunion set1 set2 取并集
-
zset 有序的set
- zadd zset 10 a 20 b 30 c 40 d 50 e 插入set
- zrange zset 0 -1 查看所有元素
- zrange zset 0 -1 withscores 查看所有元素
- zadd zset 25 bc 35 cd 查看元素 a、b、bc、c、cd、d、e
- zrank zset c 获取元素c在zset中的下标
- zscore zset c 获取元素c所占分数
- zcard 查看zset中元素数量
- zcount zset 20 40 获取分数在20到40之间的元素包含边界 不包含边界:(20 (40 大于20 小于40
- zrangebyscore zset 20 40 获取分数在20到40之间的元素包含边界
- zrangebyscore zset 20 40 limit 1 10 从下标1开始后10项
- zrem zset a b 删除
常用命令网站 http://redisdoc.com/