一.redis启动相关
1.进入目录
cd /usr/local/redis/bin
2.前台启动
./redis-server
//退出
ctrl+c
3.后台启动
//后台启动配置
cp /opt/redis-4.0.9/redis.conf /usr/local/redis/bin
修改配置文件为
//daemonize yes
//启动命令
./redis-server redis.conf
4.//查看redis进程
ps aux|grep redis
5.redis连接客户端
./redis-cli -h 192.168.171.3 -p 6379 -a "q123456"
二.redis存储字符串
//1.赋值set key value
set company itcast
//2.取值get key
注意:如果与该key关联的value不是String类型 redis将返回错误信息 如果该key不存在 返回nil
get company
//3.删除 del key
del person
//4.数值增减(value为数字时使用)
incr key:将指定的key的value的原子性的递增1 如果该key不存在 将初始值为0 在incr之后其值为1 如果
value的值不能转成整形 如hello 该操作将执行失败并返回相应的错误信息
decr key:i--
incrby key n:i+=n;
decrby key n:i-=n;
//5.拼接字符串
append key value:追加字符串 与javascrpt一致(如果该key不存在 将新增一个)
三.redis哈希存储
hash类型 hashmap<string key,string value>
该类型适合存储对象的信息
每一个hash可以存储4294967295个键值对
//1.赋值 hset key field value
hset myhash username 123456
hset myhash age 123456
//2.取值 hget key field
//取出所有值
hgetall myhash
//取出某个字段的值
hget myhash username
hget myhash username,age
四.list
字符串链表 在两头插入数据非常高效 而在中间插入则非常慢
//1.两端添加 lpush key value1 value2 value3 (无该key则自动创建一个)
//头部添加
lpush mylist a b c
//尾部添加 在list尾部添加
rpush key value1 value2 value3
//2.查看列表 lrange key start end
获取链表从start 到end元素的值 start end从0开始数 可以是负数 -1为链尾元素 -2表示倒数第二个
lrange mylist 0 5
lrange mylist 0 -1
//3.两端弹出
lpop key 返回并弹出指定key关联的链表的第一个元素 即头部元素 如果该key不存在 返回nil 若key存在
返回链表头部元素
lpop mylist
rpop key 从尾部弹出元素
//4.获取链表中的元素个数
llen key 返回指定key关联的链表元素的数量
llen mylist
//5.扩展命令
lpush key value :仅当参数指定的key存在时 向关联中的表的头部插入value 如果不存在 将不插入
rpushx key value:在该list尾部添加元素
lrem key count value 删除count个值为value的元素 如果count大于0 从头到尾遍历删除count个值为value的元素
小于0 从尾到头 等于0 删除所有为value的元素
lset key index value:设置链表中的索引的元素值 0代表头元素 -1代表链表的尾元素
linsert key before|after pivot value 在pivot元素前或后插入value这个元素
rpop|push resource destination: 将链表中的尾部元素弹出并添加到表头(循环操作)
五.Set
//1.添加元素
sadd key value1 value2
//2.删除
srem key member1 member2
//3.获得集合中的元素
smembers key //获取该set中所有的成员
sismember key member: //判断参数中指定的成员是否在该set中 1表示存在 0表示不存在 或者该key本身就不存在
//4.集合的差集运算(用于两个set对象)
sdiff key1 key2 ..:返回key1 key2相差的成员 而且与key的顺序无关 即返回差集
//5.集合的交集运算
sinter key1 key2 key3
//6.并集运算
sunion key1 key2 key3
//7.扩展命令
scard key //获取set中成员的数量
srandmember key //随机返回set中的一个成员
sdiffstore destination key1 key2 //将key1 key2 相差的成员存储在destination上
sinterstore destination key1 key2 //将返回的交集存储在destination上
sunionstore destination key1 key2 //将返回的并集存储在...
//8.使用场景
可以使用redis的set数据类型跟踪一些唯一性数据 比如访问某一博客的唯一ip地址信息 需要在每次访问该博客时将访问者的IP存入到redis中 set数据类型会自动保证IP地址的唯一性
六.sorted-set
sorted-set与set相似 区别是每一个成员都会有一个分数与之关联 redis正是通过分数为集合中的成员进行从小到大的排序
//1.添加元素
zadd key score member score 2 member2
//2.获得元素
zscore key member //返回指定成员的分数
zcard key //获取集合中的成员变量
//3.删除元素
zrem key member //移除集合中指定的成员 可以指定多个成员
//4.范围查询
zrange key start end [withscores] //获取集合中索引 start-end成员 [withscores]参数表明返回成员包含其分数
zrevranage key start stop [withscores] //照元素分数从大到小的顺序返回索引从start到stop之间的所有元素
(包含两端的元素)
zremrangebyrank key start stop //按照排名范围删除元素
zremrangeby score key min max //按照分数范围删除元素
//5.扩展命令
zrangebyscore key min max [withscores] [limit offset count] //返回分数在min amx的成员并按照scores从低到高排序
zrangebyscore mysort 0 100 withscores
zincrby key increment member //设置指定成员的增加的分数 返回值是更改后的分数
zcount key min max //获得分数在min max之间的成员
zrank key member //返回成员在集合中的排名 (从大到小)
zrevrank key member //返回成员在集合中的排名
7.通用操作
//1.返回所有与该key匹配的keys *表示任意一个或多个字符?表示任意一个字符
key pattern
//2.删除指定的key
del key1 key2
//3.判断该Key是否存在
exists key
//4.为当前的key重命名
rename key newkey
//5.设置过期时间 单位:秒
expire key 3600
//6.获取该key所剩余的时间 如果没有设置超时 则返回-1 返回-2表示超时不存在
ttl key
//7.获得指定key类型
type key
8.服务器命令
//1.测试连接是否存活
ping
//2.在命令行打印一些内容
echo zhangsan
//3.返回当前数据库中key的数目
dbsize
//4.获取服务器的信息和笔记
info
//5.删除当前选择数据库中的所有key
flushdb
//6.删除所有数据库中的所有key
flushall
9.消息订阅与发布
//1.订阅频道 subscribe channel 例:subscribe mychat 订阅mychat这个频道
//2.psubcribe channel* 批量订阅频道 例:psubscribe* 订阅以s开头的频道
//3.publish channel content:在指定的频道发布信息 如publish mychat "today is beautiful day"
10.开启事务
//开启事务 begin transation
multi
//提交事务 commit
exec
//回滚事务 rollback
discard