现在位置首页 / 项目实战 /正文

Redis学习笔记 String类型及C#调用(二)

作者: 春暖花开 | 2014年11月14日| 热度:℃ | 评论: |参与:

Redis学习笔记  各篇幅目录,热乎乎出炉,欢迎点击

上篇  《Redis学习笔记  String类型及C#调用(一)》


4

getset key value

设定值,并返回之前的旧值。针对 string 类型,否则报错。
返回值:之前的旧值。key不存在时,返回 nil。

示例:

getset key_getset "valuegetset"  //<nil>
get key_getset  //valuegetset
getset key_getset "new valuegetset" // "valuegetset"
get key_getset  //"new valuegetset"

如图:2-2-8

图:2-2-8



C#:实现

var getsetV = redisClient.GetSet("key_getset_C#", Encoding.UTF8.GetBytes("valuegetset")); //null
getsetV=  redisClient.GetSet("key_getset_C#", Encoding.UTF8.GetBytes("new valuegetset")); //"valuegetset" (btye[])


5

mset key value [ key value]


设置多个key的值。 如果key已经存在,覆盖值。
返回值:ok

示例:

mset key_mset_1 "v1"  key_mset_2 "v2" 
get key_mset_1   //v1 
get key_mset_2   //v2

如图:2-2-10

图:2-2-10


C#:

//方法:
        public void MSet(byte[][] keys, byte[][] values);
        public void MSet(string[] keys, byte[][] values);

 
 

 //实现:
            using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 0))
            {
                string[] keyArr = new string[] { "key_mset_C#_1", "key_mset_C#_2", "key_mset_C#_3" };
                string[] valArr = new string[] { "value1", "value2", "value3" };
                byte[][] byteArr = new byte[valArr.Length][];
                for (int i = 0; i < valArr.Length; i++)
                {
                    byteArr[i] = Encoding.UTF8.GetBytes(valArr[i]);
                }
                //赋值
                redisClient.MSet(keyArr, byteArr);
                //取值
                byte[][] byteArrGet = redisClient.MGet(keyArr); 
            }


6

mget key [key ...]

获取多个key的值。
如果key不存在,或不是string类型,返回 <nil>
返回值:多个key的值得列表。
示例:

mget key_mset_1  key_mset_2

如图:2-2-11

图:2-2-11


C#

//方法:
        public byte[][] MGet(params byte[][] keys);
        public byte[][] MGet(params string[] keys);
//实现:
                byte[][] byteArrGet = redisClient.MGet(keyArr);  //取值


7、

msetnx key value [key value ...]

设置多个key的值。如果key已经存在,整个msetnx命令结束。原子性。
每个key必须是不存在的才会set成功。
返回值:1--所有key都被设置了。 0--失败。有key存在。

示例:

set key_exist "I already exists."  //模拟已经存在的key
msetnx key_msetnx_1 "value1" key_msetnx_2 "value2"   //执行完毕,因为所有key都不存在
mget key_msetnx_1 key_msetnx_2
msetnx key_msetnx_3 "value3" key_exist "value_exist" key_msetnx_4 "value4" //执行失败,因为已经存在了key_exist。
mget key_msetnx_3 key_exist key_msetnx_4

如图:2-2-12

图:2-2-12


C#:

//方法:       
        public bool MSetNx(byte[][] keys, byte[][] values);        
        public bool MSetNx(string[] keys, byte[][] values);
//实现: 
        redisClient.MSetNx(keyArr, byteArr); //赋值


8、

setnx key value

key不存在时,设置key的值。
返回值:1-设置完毕  0 没有设置成功。

示例:

setnx key_setnx "setnx value"  //因为 key_setnx 不存在,所以设置值成功。
setnx key_setnx "setnx value2"  //因为 key_setnx已经存在,所以赋值失败。
get key_setnx  // 值:setnx value

如图:2-2-13

图:2-2-13

C#:

//方法:      
 public long SetNX(string key, byte[] value);
//实现:
   using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 0))
            {
                var returnVal = redisClient.SetNX("key_setnx_C#", Encoding.UTF8.GetBytes("setnx_value")); //不存在赋值
                returnVal = redisClient.SetNX("key_setnx_C#", Encoding.UTF8.GetBytes("setnx_value2"));   //存在了,不再覆盖
                var str = redisClient.Get<string>("key_setnx_C#"); //值:setnx_value
            }



9、

setex key seconds value

设置key的超时时间,秒。key 已经存在,setex 覆盖旧值。
相当于: set key value
         expire key seconds  //设置超时时间
返回值:OK 或者 seconds 不合法,返回错误。

示例:

  setex key_setex 10 "setex value 10s"  //设置key_setex超时时间为10秒。
   ttl key_setex  //获取剩余超时时间(秒)。 -1key不存在或永不超时。
   pttl key_setex //获取剩余超时时间(毫秒)。-1key不存在或永不超时。


C#:

//方法:     
   public void SetEx(string key, int expireInSeconds, byte[] value);
//实现: 
using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 0))
            {
                string key = "key_setex_C#";
                redisClient.SetEx(key, 10, Encoding.UTF8.GetBytes("set value by setex command,10 seconds.")); //设置key的值,并且设置key超时时间为10秒。
            }


10、

psetex key milliseconds value

设置key的超时时间,毫秒为单位。key 已经存在,psetex覆盖旧值。
示例:

 psetex key_psetex 10000 "psetex value 10000 milliseconds"  //设置值,并且超时时间为10000毫秒
   pttl key_psetex //显示超时剩余毫秒数


C#:

 //方法:        
public void PSetEx(string key, long expireInMs, byte[] value);
//实现:
    using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 0))            
    {
                string key = "key_psetex_C#";               
                redisClient.PSetEx(key, 10000, Encoding.UTF8.GetBytes("set value by psetex command,10000 milliseconds.")); //设置key的值,并且设置key超时时间为10秒。            
    }


11、

setrange key offset value

   覆写。 从偏移量offset开始,用value覆盖等长字符串。
   key不存在当空白字符串处理。
  示例:

  set key_setrange "abcd"
  setrange key_setrange 1 "xy" // "axyd" 从索引为1的字符开始,用 xy 覆盖其后的字符。
  setrange key_empty 3 "my test" 
  get key_empty  //"\x00\x00\x00my test"

如图:2-2-16

    图:2-2-16


C#

//方法:        
    public long SetRange(string key, int offset, byte[] value);
//实现:
            using (RedisClient redisClient = new RedisClient("127.0.0.1", 6379, null, 0))
            {
                string key = "key_setrange_C#";
                redisClient.Set(key, Encoding.Unicode.GetBytes("中国abc龙"));  //新设置一个key
                redisClient.SetRange(key, 2, Encoding.Unicode.GetBytes("z"));  //从index=2的位置覆写,长度为要覆写值得长度。 unicode 2个字节。 
必须是偶数位置。
                var v = Encoding.Unicode.GetString(redisClient.Get(key));
            }

--------------------------------------------------------------

C# demo代码:

下载  http://pan.baidu.com/s/1i3iRjkp




点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:[email protected]

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:[email protected]

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询