启动或关闭redis
.
/redis-server
/etc/redis
.conf
./redis-cli
>shutdown
通过密码验证连接到redis服务
AUTH "password"
连接远程redis服务上执行命令
redis-cli -h host -p port -a password
redis的多数据库特性
一个redis实例默认可以提供16个数据库,他们的下标从0-15;默认使用的是0号数据库。
(可以修改redis配置文件修改数据库数量)
select 1 //选择1号数据库
move key1 2 //将当前数据库中的key1移动到2号数据库
keys通用操作
keys * //查询所有的key
keys aa? //查询所有已aa开头的key
del key1 key2 //删除key1 key2
exists xxx //查看值为xxx的key是否存在
rename key1 key2 //将键key1重命名为key2
expire key1 300 //给key1设置过期时间为300秒
ttl key1 //查询key1离过期还有多长时间
type key1 //获取key1是什么类型
redis数据类型:
String类型:
set str1 "this is string"
get str1
getset str1 kkkk //先指定str1的新值kkkk,并返回str1的旧值
del str1
incr num //将 key 中储存的数字值增一。如果 key 不存在,key 的值先被初始化为 0 ,然后再执行 INCR 操作。类型不对报错
decr num // 与incr相反
incrby num 5 //将key值+5
decrby num 5 //将key值-5
append st1 xxx //将st1后面追加xxx字符串。st1不存在则创建并赋值
注意:一个键最大能存储 512MB
Hash(哈希)
Redis hash 是一个键值对(key=>value)集合,hash 特别适合用于存储对象。
hset hash1 key1 "value1"
hmset hash1 key2 "value2" key3 "value3"
hget hash1 key3 获取hash1键的字段key3的值
hmget hash1 key1 key2 key3
hgetall hash1 //获取所有属性名和属性值
hdel hash1 key1 key2 //删除 key 中的一个或多个指定字段
del hash1 //删除整个key
hincrby hash1 num1 5 //将key中某个数字字段增加5
hexists hash1 xxx //判断key中是否存在某属性
hlen hash1 //获取key的属性数
hkeys hash1 //获取key的所有属性名字
hvals hash1 //获取key的所有属性值
List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
lpush list1 value1 lalue2
lpop list1 value1 //从左侧弹出一个值
rpush list1 value4 value5
rpop list1 //从右侧弹出一个值
lrange list1 0 10
llen list1 //查询某列表总数
lpushx list1 value3 //如果list1列表存在则插入值value3; rpushx从右侧插入
rem list1 2 3 //从list1列表左侧开始删除2个3
rem list1 -2 3 //冲list1列表右侧开始删除2个3
rem list1 0 3 //删除list1中所有的3
lset list1 3 xxx //修改list1索引为3的值为xxx
linsert list1 before b 11 //在第一个b元素前插入11
linsert list1 after b 11 //在第一个b元素之后插入11
rpoplpush list1 list2 //弹出list1右侧的一个元素放入list2的左侧
Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 以 -1 表示列表的最后一个元素。
Set(集合)
Redis 的 Set 是 string 类型的无序集合。集合成员是唯一的
sadd set1 value1 value2 value3 //添加
smembers set1 //查询
srem set1 value1 value2 //删除两个值
sismember set1 a //判断集合set1中是否存在a这个值
sdiff set1 set2 //返回两个集合的差集
sinter set1 set2 //返回两个集合的交集
sunion set1 set2 //返回两个集合的并集
smembers set1 //获取集合所有成员
scard set1 //获取集合成员数
srandmember set1 //随机返回集合的一个元素
sdiffstore set3 set1 set2 //将set1和set2的差集存入set3
sinterstore set3 set1 set2 //将set1和set2的交集存入set3
sunionstore set3 set1 set2 //将set1和set2的并集存入set3
zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。
zadd zset1 70 zs 80 lisi //张三70分,李四80分
zscore zset1 zs //获取张三的分数
zcard zset1 //获取zset1中的元素数
zrem zset1 zs li //删除张三,李四
zrange zset1 0 -1 //查询所有元素名
zrange zset1 0 -1 withscores //查询元素名以及分数
zrevrange zset1 0 -1 withscores //从大到小排序
zremrangebyrank zset1 0 4 //范围删除
zremrangebyscore zset1 70 90 //删除分数在70至90的元素
zrangebyscore zset1 0 100 //查询0到100分的元素
zrangebyscore zset1 0 100 limit 0 2 //查询0到100分的元素,只显示前两条
zincrby zset1 3 li //给李四分数加3
zcount zset1 80 90 //查询分数在80至90分的元素
redis事务
multi(开始一个事务) exec(相当于提交事务) discard(相当于回滚事务)
redis两种持久化
RDB方式:默认的方式,每隔一段时间将数据保存一次
AOF方式:以日志的方式记录服务器每一操作。redis启动的时候会读取这些文件来构建数据库
两种方式可以一起使用
AOF方式:AOF每秒同步,每修改同步,不同步