redis提供五种数据类型: string 字符串类型 是二进制安全的,可以保存任何数据,包括图片和序列号对象 set get setnx ttl setrange mset msetnx getset getrange mget incr incrby decr decrby hash 散列类型 hmset hmget 同时设置一个hash表的多个field hset hget 设置一个hash表的一个field hincrby hexists hlen hdel hkeys hvals hgetallredis中常用的命令: 键值相关命令: key h*lo 查找以h开头,lo结尾的键 exists name 查找name键是否存在,1表示存在,0表示不存在 del name 删除name键 expire age 20 设置age键的过期时间为20秒 ttl 以秒为单位,返回给定key的剩余生存时间 select 3 选择数据库,3 指的是数据库3,默认有0-15,共16个数据库 move age 7 移动一个键到指定的数据库,将age键从当前库移动到数据库7 randomkey 随机返回一个当前库的键 rename 对键值进行重新命名 rename name NAME tpye 查看一个键的类型(string hash list set zset,) ping 测试服务器是否可以连接 echo 在命令行输出字符串,字符串需要用引号扩起来 quit 退出数据库list 列表类型 lpush 在对应的list的头部添加字符串元素 lpush和lrange是先写入的后读出 rpush和lrange是先写入的先读出 0代表从头部开始第一个元素 -1代表从尾部开始第一个元素 0 -1 代表list链表中所有的数据 127.0.0.1:6379[2]> lpush list world (integer) 1 127.0.0.1:6379[2]> lpush list hello (integer) 2 127.0.0.1:6379[2]> lrange list 0 -1 1) "hello" 2) "world" rpush 在key对应的list的尾部添加字符串 linsert 在key对应的list的特定位置前后添加字符串 lset 修改list中指定下标的元素值 lrem 从key中对应list中删除n个“指定值"的元素 ltrim 保留指定的key的值范围内的数据 lpop 从list的头部删除元素,并返回删除元素 rpop 从list的尾部删除元素,并返回删除元素 rpoplpush 将第一个list1尾部的元素添加到第二个list的头部 #rpoplpush list1 list2 也就是rpop出list1的尾部元素,lpush到list2的头部 lindex 获取队列中指定下标元素的值 llen 获取队列的长度 set 集合类型 sadd 添加一个或多个元素到集合中 127.0.0.1:6379[2]> sadd set1 2 3 4 smembers 获取集合里面所有的元素 127.0.0.1:6379[2]> smembers set1 srem 从集合中删除指定的一个或多个元素 127.0.0.1:6379[2]> srem set1 2 3 spop 随机从集合中删除一个元素并返回 127.0.0.1:6379[2]> spop set1 srandmember 随机返回集合中一个元素,但不删除 127.0.0.1:6379[2]> srandmember set1 scard 获取集合里面的元素个数 127.0.0.1:6379[2]> scard set1 sismember 确定一个值是否是集合中的元素 127.0.0.1:6379[2]> sismember set1 5 sdiff 返回集合1和集合2的差集,以集合1为主 也就是集合1减去两个集合的共同值 sdiffstore diff set1 set2 也就是将命令sdiff set1 set2的值存入diff中 sinter 获取两个集合的交集 sinterstore ss set1 set2 将命令sinter set1 set2的结果保存到ss中 sunion 获取两个集合的并集 sunionstore store set1 set2 将命令sunion set1 set2 的结果保存到store中 smove 将指定的值从源集合移动到目标集合 zset 有序集合类型 zadd 向一个指定的有序集合内添加元素 127.0.0.1:6379[2]> zadd zset1 1 one 2 two 向zset1中添加两个值 127.0.0.1:6379[2]> zrange zset1 0 -1 获取zset1中的所有值 127.0.0.1:6379[2]> zrange zset1 0 -1 withscores 获取zset1中的值,并按分数从小到大排序 127.0.0.1:6379[2]> zrevrange zset1 0 -1 withscores 反向排序,获取zset1中的值,并按分数从大到小排序 127.0.0.1:6379[2]> zrangebyscore zset1 2 3 withscores 获取zset1中的分数在2和3之内的值 127.0.0.1:6379[2]> zrem zset1 three 获取zset1中的three的数据 zincrby 给有序集合中指定值得成员的分数加上增量值 zincrby zset1 2 xiaoxiao 给xiaoxiao的分数加2 zrank 返回有序集合中指定值得下标。值按score从小到大排序 zrank zset1 xiaoxiao zrevrank 反向排序,返回有序集合中指定值下标,值按score从大到小排序 zrevrank zset1 xiaoxiao zcount 返回有序集合中,score值在起始分数与截止分数之间的个数 zcount zset1 60 100 返回分数在60到100的有几个 zcard 返回有序集合元素的个数 zcard zset1 返回zset1中有几个元素 zremrangebyrank 删除有序集合中,下标在指定区间的元素 zremrangebyrank zset1 0 2 删除下标在0和2之间的元素 zremrangebyscore 删除有序集合中,分数在指定区间的元素 zremrangebyscore zset1 0 60 withscores 删除分数在60以下的元素 zinterstore 取集合1和集合2的交集,并将结果保存在新集合中,在计算交集前, 需要指定计算交集的集合的个数。交集中,值得分数是多个集合中分数的总和 zinterstore zset1 3 zset1 zset2 zunionstore 与zinterstore类似,只不过取两个集合的交集,分数取多个集合中分数总和 存储值: 127.0.0.1:7002> set name lamp 设置name的值为lamp 127.0.0.1:7001> get name 获取键name的值 127.0.0.1:7001> setnx name alex 设置未存在的键name的值 (integer) 0 返回0表示name键已经存在,不会重新赋值 127.0.0.1:7001> setex age 10 60 设置age的值为60,有效期为10秒 127.0.0.1:7000> ttl age 查看age的剩余的生存时间 返回-2表示此key不存在 返回-1表示此key没有设置剩余生存时间 否则返回的就是以秒为单位的剩余生存时间 127.0.0.1:7000> set mail 123456789@qq.com 设置mail的值 OK 127.0.0.1:7000> setrange mail 9 @163.com 将mail的值从第9各开始替换为@163.com (integer) 17 返回mail共有多少个字符 127.0.0.1:7000> get mail 获取mail的值 "123456789@163.com" 127.0.0.1:7000> mset key1 lamp1 key2 lamp2 一次设置多个键值对 返回ok表示所有的值都已经设置,返回0表示没有任何值被设置 127.0.0.1:7001> getset name lamp 设置name的值并返回旧值 127.0.0.1:7001> getrange name 0 2 返回name的下标从0到2的子字符串 127.0.0.1:7001> mget key1 key2 mget一次获取多个值,对于key不存在返回nil 127.0.0.1:7001> set key1 10 OK 127.0.0.1:7001> incr key1 对key1值做加加,也就是递增的操作,并返回新值 127.0.0.1:7001> incrby key1 5 对key1值做每次递增5的操作,并返回新值 decr与incr相反,做递减的操作 decrby与incrby相反,做递减操作 127.0.0.1:7000> get mail "123456" 127.0.0.1:7000> append mail @qq.com 给指定的key的字符串增加value,返回新字符串的长度 (integer) 13 127.0.0.1:7000> get mail "123456@qq.com" 127.0.0.1:7000> STRLEN mail 返回指定key的value值的长度 127.0.0.1:7000> del mail 删除一个已经创建的key
save 保存所有数据,save命令回阻塞所有端口的请求, 生产环境一般使用BGSAVE代替,save是保存数据的最后手段 dbsize 返回当前库中键的数量 info 获取服务器的详细信息 config get 获取redis服务器配置文件中的参数,也支持通配符 config get * 获取服务器配置文件的所有参数 config get dbfilename 获取服务器的数据库文件名 flushdb 删除当前数据库中所有的数据 flushall 删除数据库中的所有数据 添加数据库密码:redis.conf --> requirepass password-->pkill redis--> redis-server ../redis.conf --> redis-cli -h IP地址 -P port -ppassword (使用集群用-c) -h ip地址在使用本地数据库的情况下可以省略 -p password 最好也不要使用,会在历史命令中留下密码信息, 可先进入,redis-cli -p 6379, 再使用auth password,输入密码进入数据库 redis主从复制的特点: 1、master可以拥有多个slave 2、多个slave可以连接同一个master外,也可以连接到其他slave上 3、主从复制不会阻塞master,在同步数据时,master可以继续处理client请求 4、提高系统的伸缩性 redis主从复制过程: 1、slave与master建立连接,发送sync同步命令 2、master会启动一个后台进程,将数据库快照保存到文件中, 同时master主进程会开始收集新的写命令并缓存 3、后台完成保存后,就将此文件发送给slave 4、slave将此文件保存到硬盘上 redis对事务的处理 redis只能保证一个client发起的事务中的命令可以连续的执行, 中间不会插入其他的client命令。 multi命令发出后进入一个事务,该命令后的命令不会立即执行, 而是先存储在一个队列中,当命令对应结束命令时, redis才会对队列当中存储的命令进行依次顺序执行或取消执行。 exec是执行事务,discard是回滚,取消事务。 发布订阅消息: 相同的客户端启动多个,在一个客户端发布消息,其他客户端都可以收到 127.0.0.1:6379> SUBSCRIBE cctv1 此客户端处于监听cctv1频道的消息 127.0.0.1:6380> publish cctv1 hello 这个客户端发布消息到cctv1频道 127.0.0.1:6379> psubscribe * 监听所有频道 127.0.0.1:6379> psubscribe cctv.* 监听所有以cctv开头的频道 127.0.0.1:6379> unsubscribe cctv1 取消订阅 127.0.0.1:6379> unsubscribe cctv1.* 127.0.0.1:6379> PUBSUB channels 查看当前服务器订阅的所有通道 127.0.0.1:6379> PUBSUB channels.* 查看当前服务器订阅的以chnnels开头的通道 127.0.0.1:6379> pubsub numsub cctv1,cctv2,cctv3 查询订阅通道订阅者数量,支持多通道一起查询
查看原文:http://www.chenqmc.com/?p=376
redis五种类型及常用命令
最新推荐文章于 2025-03-05 02:04:36 发布